101个问题
假设我正在创建汽车数据库,每个汽车对象的定义如下:
#import <UIKit/UIKit.h>
@interface Car:NSObject{
NSString *name;
}
@property(nonatomic, retain) NSString *name;
为什么是@property(nonatomic, retain) NSString *name;
而不是@property(nonatomic, assign) NSString *name;
我知道assign
不会像retain
那样增加引用计数器。但是为什么要使用retain
,因为name
是todo
对象的成员,它的作用域是它自己。
其他外部函数也不会修改它。
发布于 2011-01-12 00:23:47
别忘了通过
self.name = something;
因为
name = something;
我不关心生成的setter/getter方法,而是直接赋值。
发布于 2009-09-04 17:09:42
如果没有retain
,就不能保证用来设置name
的NSString*
会比赋值语句本身更长。通过使用合成setter的retain
属性,您可以让它告诉内存管理系统,至少还有一个对象需要保留NSString*
。
发布于 2011-01-12 00:06:06
对于那些正在寻找它的人来说,苹果关于属性的文档是here。
https://stackoverflow.com/questions/1380338
复制相似问题