码迷,mamicode.com
首页 > 其他好文 > 详细

OC使用

时间:2015-07-29 14:12:36      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:

1.为什么声明某些属性时候,一般用copy,而不用strong

@interface Car : NSObject

@property (nonatomic,copyNSString* name;

@property (nonatomic,copy) NSArray *array;

@end

对于具有可变副本的属性我们一般声明为copy

比如说,上述name的属性为copy,假设此时有人创建了一个Car的对象,并且把这个属性赋给了一个NSMutableString的值,但是如果这个值发生变化,而我们声明的属性用copy而不用Strong的话,随着可变字符串的变化,person对象也将发生变化,而这并不是我们想要看到的,对于类似字典和数组,大抵也是这种情况。即:

NSMutableString *someName = [[NSMutableString alloc]initwithString:@"Terry"]

    NSMutableArray *someArray = [[NSMutableArray alloc]initWithObjects:@1,@2,@3, nil];

Car *car = [[Car alloc]init]

car.name = someName;

  car.array = someArray

[someName setString:@"Tod"]

[someArray removeoobjectAtIndex:0];

如果声明属性为copy值car.name 为Terry,如果是Strong,car.name 为Tod

同样如果数组属性为copy car.array为1,2,3,否则为2,3;

即 属性为copy时我们用car.array = someArray会生成不可变的copy,并不会随着someArray的变化而变化。



版权声明:本文为博主原创文章,未经博主允许不得转载。

OC使用

标签:

原文地址:http://blog.csdn.net/see_you_in_the_past/article/details/47124569

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!