代码1使用 “_” 做任务:的iOS保留副本问题
@interface ViewController()
@property (nonatomic,retain) NSMutableString *rrstr;
@property (nonatomic,copy) NSMutableString *copystr;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
NSMutableString *ssss = [[NSMutableString alloc]initWithString:@"ddddd"];
_rrstr = ssss;
_copystr = ssss;
NSLog(@"%@===%@===%@",ssss,self.rrstr,self.copystr);
[ssss appendString:@"1231"];
NSLog(@"%@===%@===%@",ssss,self.rrstr,self.copystr);
[ssss deleteCharactersInRange:NSMakeRange(1, 3)];
NSLog(@"%@===%@===%@",ssss,self.rrstr,self.copystr);
}
代码1输出: “”
2016-09-19 10:44:29.190 retin[1160:72426] ddddd===ddddd===ddddd
2016-09-19 10:44:29.191 retin[1160:72426] ddddd1231===ddddd1231===ddddd1231
2016-09-19 10:44:29.192 retin[1160:72426] dd1231===dd1231===dd1231
码2使用做任务:
@interface ViewController()
@property (nonatomic,retain) NSMutableString *rrstr;
@property (nonatomic,copy) NSMutableString *copystr;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
NSMutableString *ssss = [[NSMutableString alloc]initWithString:@"ddddd"];
self.rrstr = ssss;
self.copystr = ssss;
NSLog(@"%@===%@===%@",ssss,self.rrstr,self.copystr);
[ssss appendString:@"1231"];
NSLog(@"%@===%@===%@",ssss,self.rrstr,self.copystr);
[ssss deleteCharactersInRange:NSMakeRange(1, 3)];
NSLog(@"%@===%@===%@",ssss,self.rrstr,self.copystr);
}
码2输出:
2016-09-19 10:50:09.079 retin[1190:75922] ddddd===ddddd===ddddd
2016-09-19 10:50:09.079 retin[1190:75922] ddddd1231===ddddd1231===ddddd
2016-09-19 10:50:09.080 retin[1190:75922] dd1231===dd1231===ddddd
我很困惑,为什么这两个代码具有不同的输出?这些代码不应该有相同的输出吗? “_”和“。”之间的差异究竟是什么?句法?
更好地发布代码,而不是屏幕截图 – Leo