开发过iOS的小伙伴都知道,一般我们的NSString对象都是用copy进行修饰,但是有时候呢也会使用strong修饰,为什么会这样子,先来看一段代码
#import "FirstViewController.h"
@interface FirstViewController ()
@property (copy, nonatomic) NSString* myCopyString;
@property(strong, nonatomic) NSString* strongString;
@end
@implementation FirstViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
NSMutableString* string = [NSMutableString stringWithString:@"这是一个可变的字符串"];
NSLog(@"%p---%p----%p", self.myCopyString, self.strongString, string);
self.myCopyString = string;
self.strongString = string;
NSLog(@"%p---%p----%p", self.myCopyString, self.strongString, string);
[string appendString:@"+测试使用"];
NSLog(@"%p---%p----%p", self.myCopyString, self.strongString, string);
NSLog(@"%@----%@", self.myCopyString, self.strongString);
}
声明的两个对象都是NSString类型的,myCopyString使用copy修饰,strongString使用strong修饰,创建一个NSMutableString对象string分别对上面的两个进行赋值,之后修改NSMutableString对象
我们来看看输出结果
0x0---0x0----0x60800004f1e0
0x60800004fcc0---0x60800004f1e0----0x60800004f1e0
0x60800004fcc0---0x60800004f1e0----0x60800004f1e0
这是一个可变的字符串----这是一个可变的字符串+测试使用
结果表明,使用copy修饰的字符串,string进行改变的时候呢不会受到影响,而是用strong修饰的字符串在string变化的时候会受其影响,所以说,一般我们会使用copy对字符串进行时修饰,因为安全。
。。。。下次讲什么时候用strong修饰。。。。 在下也是一个小小新手
网友评论