首页 > 其他 > 详细

OC使用

时间:2015-07-29 14:10:10      阅读:144      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!