NSString属性的读写属性参数从copy到strong

2016-03-20  本文已影响53人  洛丹伦的夏天
//外界修改了字符串,不会影响里面.
@property (nonatomic, copy) NSString *name;

在我们最开始学习OC的时候,基本上都习惯了NSString类型的属性的存取修饰用copy。
我们来看一下copy帮我们做了什么事情:

    //不可变字符
    NSString *name = @"jack";
    Person *per =  [[Person alloc] init];
    per.name = name;
    NSLog(@"%p======%p",name,per.name);
0x108e88220======0x108e88220
    //可变字符串
    NSMutableString *name = [NSMutableString stringWithFormat:@"jack"];
    Person *per =  [[Person alloc] init];
    per.name = name;
    NSLog(@"%p======%p",name,per.name);
0x7fda6bc99f10======0xa00000000676d783

这里就会考虑到一个事情,我们开发当中从服务器接到的数据可以说几乎就是一些不可变的字符串,然后再用模型存起来。再想到一个项目当中的属性可能成百上千,每一个copy修饰的属性内部在赋值的时候都做了上面所说到的一次判断。
而strong就不用做那一次判断。所以现在我会偏向于用strong来修饰NSString属性。也算是一点点性能上的优化吧。

上一篇 下一篇

猜你喜欢

热点阅读