美文网首页
NSString 修饰词使用copy 还是 strong

NSString 修饰词使用copy 还是 strong

作者: hg_said | 来源:发表于2018-08-20 17:33 被阅读0次

    假设现在声明两个NSString对象,分别用copy和strong来修饰:

    @property(nonatomic,copy)NSString  *strOne;

    @property(nonatomic,strong)NSString *strTwo;

    NSMutableString *str = [NSMutableString stringWithFormat:@"str"];

    self.strOne = str; self.strTwo=str;

    NSLog(@"str==%p,strOne==%p,strTwo==%p",str,strOne,strTwo);

    这里生成一个NSMutableString对象,并分别赋给strOne和strTwo,观察输出值:str==0x600000249e10,strOne=0x600000249e10,strTwo=0x60000023d1a0

    可以看到str 和strOne地址相同,strTwo地址与其不同,说明在这里strTwo进行了深复制,strOne进行的是指针复制,也就是浅复制。

    经过实践,如果将str由NSMutableString改成NSString的话,无论是copy还是strong 修饰之后输出都是同一个对象地址。

    当修饰可变类型的属性时,如NSMutableArray、NSMutableDictionary、NSMutableString,用strong。

    当修饰不可变类型的属性时,如NSArray、NSDictionary、NSString,用copy

    相关文章

      网友评论

          本文标题:NSString 修饰词使用copy 还是 strong

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