copy 和 retain(strong) 的区别

2016-08-21  本文已影响46人  Coder大雄
首先声明
@property (retain,nonatomic) NSString *rStr;
@property (copy, nonatomic)   NSString *cStr;
@property (retain,nonatomic) NSString *rStr2;
@property (copy, nonatomic)   NSString *cStr2;
对NSMutableString的对象赋值
NSMutableString *mStr = [NSMutableString stringWithFormat:@"abc"];  
self.rStr = mStr;
self.cStr = mStr;
/*
    第一个%p:是打印的指向mStr指针的地址
    第二个%p是打印的指向mStr指针的指针的地址
    相当于C中 * 和**的区别
*/
NSLog(@"mStr:%p,%p",  mStr,&mStr);      //mStr:0x7fd513413f80,0x7fff522d9898  
NSLog(@"retainStr:%p,%p", _rStr, &_rStr);  //retainStr:0x7fd513413f80,0x7fd513618428
NSLog(@"copyStr:%p,%p",   _cStr, &_cStr); //copyStr:0xa000000006362613,0x7fd513618430
[mStr appendString:@"de"];
NSLog(@"retainStr:%@",  _rStr);             //retainStr:abcde
NSLog(@"copyStr:%@",    _cStr);             //copyStr:abc
对对NSString的对象赋值
NSString *noString = [NSString stringWithFormat:@"123"];
self.rStr2 = noString;
self.cStr2 = noString;
NSLog(@"mStr:%p,%p",  noString,&noString);      //mStr:0xa000000003332313,0x7fff522d9890
NSLog(@"retainStr:%p,%p", _rStr2, &_rStr2);     //retainStr:0xa000000003332313,0x7fd513618438
NSLog(@"copyStr:%p,%p",   _cStr2, &_cStr2);     //copyStr:0xa000000003332313,0x7fd513618440
上一篇 下一篇

猜你喜欢

热点阅读