美文网首页程序员
iOS中copy,strong的简单理解

iOS中copy,strong的简单理解

作者: JustEverOnce | 来源:发表于2017-10-19 21:37 被阅读0次

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

    相关文章

      网友评论

        本文标题:iOS中copy,strong的简单理解

        本文链接:https://www.haomeiwen.com/subject/qmupuxtx.html