程序员

iOS中copy,strong的简单理解

2017-10-19  本文已影响0人  JustEverOnce

开发过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修饰。。。。 在下也是一个小小新手

上一篇 下一篇

猜你喜欢

热点阅读