Specific performance and behaviour difference using properties or accessing the ivars directly.
For Global variables, What is the difference between using this:
@interface myClass (){
UIImageView *myView;
}
-(void)loadView{
[super loadView];
myView = [[UIImageView alloc] initWithFrame:CGrectMake(0,0,100,100)];
}
And doing this:
@interface myClass (){
}
@property (nonatomic, strong) UIImageView *myView;
@synthesize myView = _myView;
-(void)loadView{
[super loadView];
myView = [[UIImageView alloc] initWithFrame:CGrectMake(0,0,100,100)];
}
What benefits can we have with every approach?
What are the reasons to recommend to always uses properties?
In the first case, your instance variable (or ivar)
myViewis private to the class and cannot be accessed by another class.In the second case, you have provided a property that allows other classes to access your ivar via synthesized accessors. The alternative to declared properties is to write your own accessor methods. The
@synthesizenotation does that for you.See Apple documentation on declared properties