* assign: 简单赋值,不更改索引计数(Reference Counting),
对基础数据类型 (NSInteger)和C数据类型(int, float, double, char,等)。
* copy: 创建一个和原对象相同, 索引计数为1的新对象。
dealloc 需要 release,原对象要继承NSCopying 协议。
* retain: 释放旧的对象,将输入对象指针赋予对象,
再将输入对象的索引计数+1,对其他NSObject和其子类,
dealloc 需要 release,
下面这段内容来自网络,没有验证。
在 iOS 中, 只要控件使用 IBOutlet 连接, 则必须释放它, 而不管是否有 @property ( retain ) 属性
在 mac OS 中, 使用 IBOutlet 连接, 如果有 @property (retain) 属性,则 dealloc 需要 release, 如果没有 @property (retain) 属性,则不需release .
原因:iOS 默认 retain 属性, mac OS 默认非 retain 属性。
回头我验证一下。再修改这里的内容。
个人认为,其他的就不管了。
记住一条,使用 IBOutlet 连接的情况下,凡是NSObject和其子类等类似有索引计数的,尽量用retain,然后再release。