最近一直在思考这个问题,先给个怎么用来提醒自己下吧,以后就这样用试试
* 使用assign: 对基础数据类型 (NSInteger)和C数据类型(int, float, double, char,等)
* 使用copy: 对NSString(nsstring貌似用retain也是可以的)
* 使用retain: 对其他NSObject和其子类
assign: 简单赋值,不更改索引计数
copy: 建立一个索引计数为1的对象,然后释放旧对象
retain:释放旧的对象,将旧对象的值赋予输入对象,再提高输入对象的索引计数为1
Copy其实是建立了一个相同的对象,而retain不是:
比如一个NSString对象,地址为0×1111,内容为@”STR”
Copy到另外一个NSString之 后,地址为0×2222,内容相同,新的对象retain为1, 旧有对象没有变化