字符串属性中的copy与strong

2017-08-10  本文已影响12人  前年的邂逅_Jerry
@interface ViewController ()
@property (nonatomic, copy) NSString * strCopy;
@property (nonatomic, strong) NSString * strStrong;
@end
NSMutableString *originString = [NSMutableString stringWithFormat:@"我是可变的源数据字符串"];
    self.strCopy = originString;
    self.strStrong = originString;
    [originString appendFormat:@"_append"];
    NSLog(@"originString = %@ address = %p self.strCopy = %@ address = %p self.strStrong = %@ address = %p",originString,originString,self.strCopy,self.strCopy,self.strStrong,self.strStrong);
originString    = 我是可变的源数据字符串_append      address = 0x170269980 
self.strCopy    = 我是可变的源数据字符串             address = 0x170240a20 
self.strStrong  = 我是可变的源数据字符串_append    address = 0x170269980
@interface ViewController ()
@property (nonatomic, copy) NSMutableString * strCopy;
@property (nonatomic, strong) NSString * strStrong;
@end
    NSMutableString *originString = [NSMutableString stringWithFormat:@"我是可变的源数据字符串"];
    self.strCopy = originString;
    self.strStrong = originString;
    [originString appendFormat:@"_append"];
    [self.strCopy appendFormat:@"212"];
    NSLog(@"originString = %@ address = %p self.strCopy = %@ address = %p self.strStrong = %@ address = %p",originString,originString,self.strCopy,self.strCopy,self.strStrong,self.strStrong);

实际上执行的self.strCopy的set点方法为:

- (void)setStrCopy:(NSMutableString *)strCopy{
    //[strCopy copy]产生了不可变的字符串
    _strCopy = [strCopy copy];
}
1862021-d9694468cbad6cdc.png

参考:http://www.jianshu.com/p/e6a7cdcc705d

上一篇 下一篇

猜你喜欢

热点阅读