为什么在目标c NSString作为值类型?当我写代码时
NSString *s1 = [NSString stringWithFormat:@"1"]; //;
NSString *s2 = s1;
s1 = @"7";
NSLog(@"s1 = %@", s1);
NSLog(@"s2 = %@", s2);
结果是
s1 = 7
s2 = 1
为什么?
但是当我上课时
@interface MyObject : NSObject
@property(nonatomic,nonnull,retain) NSString *string;
@end
MyObject *o1 = [[MyObject alloc]init];
o1.string = @"1";
MyObject *o2 = o1;
o1.string = @"7";
NSLog(@"01 = %@", o1.string);
NSLog(@"02 = %@", o2.string);
结果是
01 = 7
02 = 7
答案 0 :(得分:0)
它不作为值类型。
第二行会导致s2
指向与s1
指向的那个时刻相同的内存位置。然后,您将s1
更改为指向其他位置是完全不相关的。