iOS开发中Strong和Copy使用的区别

219 阅读1分钟

OC中Strong与Copy的使用区别

strong和copy是iOS开发过程中经常使用的两个修饰词,接下来咱们就借助一个场景来简单介绍下两者的最大区别

场景描述:从页面Apush到页面B,数据源从A传给页面B的属性,页面B的属性是strong声明,然后在页面B里面修改了属性的值,那么大家猜想下页面A里面的数据源会不会同时被改?答案是肯定的。那么为什么呢?

strong声明的时候在改这个属性值的时候所有地方都会被改;如果用copy会产生一个副本对象,跟源对象互不影响 修改源对象,不会影响到副本对象 修改副本对象,不会影响源对象;所以根据需求使用相应的关键字。

  • 对于自定义对象要使用copy的话必须实现NSCopying协议, 重写-(id)copyWithZone:(NSZone *)zone方法,否则会crash为Unrecognized selector setStudentId sent to instance xxx …

重写copyWithZone方法的实现要写正确,咱们下期分解。