首页 > 谁能清楚的解释一下对于NSString对象这种,copy和strong属性有什么不同吗?

谁能清楚的解释一下对于NSString对象这种,copy和strong属性有什么不同吗?

@property(nonatomic, strong) NSString *name;

@property(nonatomic, copy) NSSting *name;

我理解copy是深拷贝的意思~但是不明白为什么为什么要使用copy,使用strong有没有问题呢?


copy赋值时会开辟一个新的内存区域,而 strong 则不会。使用 copy 可以防止不可变的属性被赋值的是可变的数据时,因为可变数据的改变而改变属性的值。举个例子

@interface Test : NSObject
@property (nonatomic,strong) NSString *str1;
@property (nonatomic,copy) NSString *str2;
@end

#import <Foundation/Foundation.h>
#import "Test.h"
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSMutableString *str = [NSMutableString stringWithString:@"hello"];
        Test *test = [[Test alloc]init];
        test.str1 = str;
        test.str2 = str;
        [str appendString:@" world"];
        NSLog(@"str:%@ str1:%@ str2:%@",str,test.str1,test.str2);
    }
    return 0;
}

这段代码的输出结果是: str:hello world str1:hello world str2:hello
copy的作用应该显而易见了.

【热门文章】
【热门文章】