【iOS 知识汇】copy 修饰符

@property (nonatomic,copy)XXX* xxx ;

新手遇难,在属性声明中使用copy 结果程序崩了。

报错:

 unrecognized selector sent to instance 

都不知道哪儿出问题。

最后找到 XXX 类 不能用copy修饰。

其它网友策略。

@property内存管理策略的选择
1.非ARC 1> copy : 只用于NSString\block; 2> retain : 除NSString\block以外的OC对象; 3> assign : 基本数据类型、枚举、结构体(非OC对象),当2个对象相互引用,一端用retain,一端 用assign。 2.ARC 1> copy : 只用于NSString\block; 2> strong : 除NSString\block以外的OC对象; 3> weak : 当2个对象相互引用,一端用strong,一端用weak; 4> assgin : 基本数据类型、枚举、结构体(非OC对象)。

其实说的不一定对,其它对象也有使用copy的时候。

在OC中,若要进行对象的拷贝,则该对象所属的类必须遵守NSCopying和NSMutableCopy协议,
并重写copyWithZone:和mutableCopyWithZone:方法。而系统原生类,之所以可以直接进行拷贝
是因为它已帮我们自动做了这些事。





posted on 2020-06-15 14:40  wp7ers  阅读(234)  评论(0编辑  收藏  举报