美文网首页
我理解的NSString的copy和strong

我理解的NSString的copy和strong

作者: 天空之城_bdfa | 来源:发表于2019-03-15 22:43 被阅读0次

    一、不可变字符串

    注:①、常量字符串存储在常量存储区,如果内容相同,都会指向同一块常量存储区相同的一个区域,而不是开辟出一个额外的内存空间;

    ②、initWithStrong:生成的字符串也相当于常量;

    ③、非常量字符串(如initWithFormat:)在堆区,一般会指向不同的一个区域(发现如果是相同的简单非汉字字符串,长度不超过9个字节时,竟然是指向同一块区域)。

    1、copy相当于strong;

    2、其实跟其他对象类型,都是指针拷贝,都会指向同一个内容;

    3、由于不可变字符串的特殊性,想改变不可变字符串对象的内容,就需要重新赋值,自然这个被重新赋值的对象所指向的内容就改变了。

    (听说不可变字符串的copy在编译时,会转为strong,直接使用strong性能会更好)

    二、可变字符串

    其实跟其他对象类型一样,copy会拷贝内容生成新的指针,strong拷贝指针指向同一内容。

    结论:字符串使用copy,是为防止在持有的可变字符串改变时,导致该对象内容同时改变。

    相关文章

      网友评论

          本文标题:我理解的NSString的copy和strong

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