美文网首页
属性NSString类型声明 使用copy还是strong?

属性NSString类型声明 使用copy还是strong?

作者: 何大双 | 来源:发表于2018-06-11 10:46 被阅读0次

    先看demo中的三张截图

    图一 

    图一声明了两个属性strongStr和copyStr,分别是strong和copy

    图二

    图二将一个NSString类型的字符串分别赋给两个属性,打印可以看出copy和strong是没有差别的,指向相同的地址,字符串也一样

    图三

    图三将一个NSMutableString的对象分别赋给两个属性,可以看出strong修饰的属性strongStr他指向的地址与源对象testMutalbleStr是保持一致的,并且当源对象testMutalbleStr的字符串变化时strongStr的值也发生了变化,而copy修饰的属性copyStr拷贝了testMutalbleStr的值,地址并未和testMutalbleStr一样,当testMutalbleStr的值发生变化时,copyStr的值并不会跟着变化。

    总结:什么时候用copy?什么时候用strong?个人认为如果你想要你的NSString(NSArray\NSDictionary)属性随着赋值的对象变化而变化,那么你就使用strong,否则就用copy。一般情况下我们是不希望总是变化的所以一般我们都用copy修饰不可变的属性,而使用strong修饰可变的属性。

    相关文章

      网友评论

          本文标题:属性NSString类型声明 使用copy还是strong?

          本文链接:https://www.haomeiwen.com/subject/rzdyjftx.html