Objective c 设置值-实例变量
我正在学习Objectice-c,我注意到我可以用两种方式设置instace变量的值Objective c 设置值-实例变量,objective-c,instance-variables,Objective C,Instance Variables,我正在学习Objectice-c,我注意到我可以用两种方式设置instace变量的值 @interface Foo : NSObject @property int x; -(void)print; @end @implementation Foo -(void)print { [self setX:10] // first way x = 10; // second way } @end 我个人更喜欢第一种方法,因为它看起来更清晰。在我的项目中使用第一种方法可
@interface Foo : NSObject
@property int x;
-(void)print;
@end
@implementation Foo
-(void)print
{
[self setX:10] // first way
x = 10; // second way
}
@end
我个人更喜欢第一种方法,因为它看起来更清晰。在我的项目中使用第一种方法可以吗?您可以通过两种方式访问变量: 将setter或getter与self一起使用:
self.x = 10;
[self setX:10]
两者都是等效的,但苹果建议您将setter与self一起使用
或者直接访问ivar。ivar名称取决于您如何合成它。如果使用默认的合成(或您自己不合成),则如下所示:
_x = 10;
在您的示例中,第二种方法是直接访问ivar,第一种方法是使用setter(与self.x=10相同)
建议使用第一种方法(使用self或setter),因为它可以解决内存问题、释放以前的值、保护线程(如果需要)等等,而且使用self更舒适。而不是打电话给塞特
只有在使用init方法时才使用ivar,其余部分使用setter。在
init
和dealloc
之外使用setter。在这两种方法中直接使用ivar。