【发布时间】:2012-08-23 21:41:16
【问题描述】:
可能重复:
How does an underscore in front of a variable in a cocoa objective-c class work?
在如下合成变量名后,我一直对使用 self 或带下划线的变量名感到非常困惑:
In .h file:
@property(nonatomic, strong) NSMutableArray *users;
In .m file:
@synthesize users = _users;
根据我在使用self.users时的理解,操作系统会确保在set方法中释放之前分配的内存,所以我们不需要显式处理。
_users 是用户的实例变量,应该在访问用户变量时正常使用。如果我使用_users 更改它的值,那么它不会触发 KVO 委托,它不会通知观察用户值变化的类。
此外,self.users 允许在方法名称中区分虚拟变量,如下所示,
- (void)assignUsers:(NSMutableArray*)users {
self.users = users;
}
有人可以告诉我在使用_users 或self.users 时是否有任何我理解错误或遗漏的地方?
【问题讨论】:
-
嗨@qegal 我浏览了那个帖子,如果你读了我的问题,大部分点都是结论点,但我不知道什么时候使用什么!
标签: ios objective-c memory-management self