【发布时间】:2023-03-17 18:01:01
【问题描述】:
使用属性或直接访问 ivars 的具体性能和行为差异。
对于全局变量,使用this有什么区别:
@interface myClass (){
UIImageView *myView;
}
-(void)loadView{
[super loadView];
myView = [[UIImageView alloc] initWithFrame:CGrectMake(0,0,100,100)];
}
然后这样做:
@interface myClass (){
}
@property (nonatomic, strong) UIImageView *myView;
@synthesize myView = _myView;
-(void)loadView{
[super loadView];
myView = [[UIImageView alloc] initWithFrame:CGrectMake(0,0,100,100)];
}
每种方法都有什么好处? 建议始终使用属性的原因是什么?
【问题讨论】:
-
您的第二个示例甚至无法编译,因为
myView不是有效标识符。另外,您在这里不是在谈论“全局变量”。您在询问实例变量 (ivars) 和属性。 -
这里有一些其他类似的问题:Why would you use an ivar?。还有iOS: must every iVar really be property?.
标签: iphone objective-c ios