iOS 屬性知識之為什麼要使用copy特性 – iPhone手機開發 iPhone軟體開發教學課程

iOS 屬性知識之為什麼要使用copy特性

@property (nonatomic, strong) NSString *name;

@property (nonatomic, copy) NSString *meng;

@end

@implementation ViewController

– (void)viewDidLoad {

[super viewDidLoad];

[self testCopyAndStrong];

//[self testString];

}

– (void)testCopyAndStrong {

NSMutableString *str = [[NSMutableString alloc] initWithString:@"meng"];

self.meng = str;

self.name = str;

[str appendString:@"zhiqi"];

//實際上不可變字符串能拼接是因為它隻是用該字符串的副本來拼接

NSString *str1 = [str1 stringByAppendingString:@"mmm"];

//&打印指針的地址,沒有&則是打印指針所指向對象的地址

NSLog(@"%p, %p", str, &str);

//strong特性,指針地址不同,但是指針所指向對象的地址相同,是淺拷貝(地址拷貝)

NSLog(@"%p, %p", self.name, &_name);

//copy特性,指針地址不同,指針所指向的對象的地址也不同,是深拷貝(內容拷貝)

NSLog(@"%p, %p", self.meng, &_meng);

NSLog(@"%@", str);

//self.name打印出mengzhiqi,可見strong特性隻是把指針所指向對象的地址拷貝瞭

NSLog(@"%@", self.name);

NSLog(@"%@", self.meng);

}

– (void)testString {

NSString *str = @"meng";

self.meng = str;

self.name = str;

//&打印指針的地址,沒有&則是打印指針所指向對象的地址

NSLog(@"%p, %p", str, &str);

NSLog(@"%p, %p", self.name, &_name);

NSLog(@"%p, %p", self.meng, &_meng);

}

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。