我正在学习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
我个人更喜欢第一种方法,因为它看起来更清晰。可以在我的项目中使用第一种方法吗?
答案 0 :(得分:1)
您可以通过两种方式访问变量:
使用setter或getters with self。 :
self.x = 10;
[self setX:10]
两者都是等价的,但Apple建议您自己使用setter。
或直接访问ivar。 ivar名称取决于你如何合成它。如果你使用默认的合成(或者你自己不合成),就像这样:
_x = 10;
在你的例子中,第二种方式是直接访问ivar,第一种方法是使用setter(与self.x = 10相同),
建议使用第一种方法(使用self或使用setter),因为它会处理内存问题,释放以前的值,如果你需要,可以保护线程等等。使用self更方便。而不是打电话给二传手。
当您使用 init 方法时,只使用ivar,对于其余方法,请使用setter。