一个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
一样增加引用计数。但既然name
是todo
对象的成员,它的作用域只限于todo
本身,那为什么要使用retain
呢?此外,没有其他外部函数会修改它。
readonly
属性(@property (nonatomic, retain/assign/copy, readonly) NSString *myString;
),最好是使用retain
、copy
还是assign
? - chown[[... retain] autorelease]
的 iVar 值,如果你在代码中以某种方式替换了 iVar 的值,这可能是一个重要的区别。 - Mecki