@property中,retain,assign,copy的差别
1.retain:先release旧值,再retain新值,最终指向同一块内存区域。
2.assign:直接赋值,不考虑内存管理。
3.copy:先release旧值,再copy新值,copy的本质为复制该内存所存储的内容,重新创建一个对象赋给其相同的内容,很明显,在copy这个过程中也发生了一次retain,不过这是个全新的对象。最终指向了不同的内存区域,但其内容一样。
4.从retain assign copy的特点中我们可以看出:
retain一般适用于OC中的对象
assign一般适用于非OC对象,如int等普通类型
copy一般适用于NSString等不可变的对象,因为是重新创建了对象,并且内容不变,因此不用担心后面的操作会对该属性的值产生影响。