我正在学习Objectice,并且我注意到我可以通过两种方式设置instace变量的值
@interface Foo : NSObject
@property int x;
-(void)print;
@end
@implementation Foo
-(void)print
{
[self setX:10] // first way
x = 10; // second way
}
@end
我个人更喜欢第一种方法,因为它看起来更清晰。在我的项目中使用第一种方法可以吗?
发布于 2013-07-10 14:44:03
您可以通过两种方式访问变量:
对self使用setter或getter。:
self.x = 10;
[self setX:10]
两者都是等同的,但苹果建议你将setter与self一起使用。
或者直接访问ivar。依瓦尔的名字取决于你如何合成它。如果使用默认合成(或者不自己合成),则如下所示:
_x = 10;
在您的示例中,第二种方法是直接访问ivar,第一种方法是使用setter (与self.x =10相同),
推荐使用第一种方法(使用self或使用setter),因为它可以解决内存问题,释放以前的值,保护线程,等等。而且使用self更舒服。而不是调用二传手。
只有在使用init方法时才使用ivar,其余的使用setter。
https://stackoverflow.com/questions/17573630
复制相似问题