zoukankan      html  css  js  c++  java
  • NSString copy,strong 修饰问题

    2017-07-1

    #import "ViewController.h"
    
    @interface ViewController ()
    
    @property (nonatomic, strong) NSString *str1;
    @property (nonatomic, copy) NSString *str2;
    
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        // Do any additional setup after loading the view, typically from a nib.
       
        @autoreleasepool {
            NSMutableString *str = [NSMutableString stringWithString:@"hello"];
            
            self.str1 = str;
            self.str2 = str;
            [str appendString:@" world"];
            NSLog(@"str1:%@ str2:%@", self.str1, self.str2); // str1:hello world str2:hello
        }
        
    }

    2017-07-19 16:13:23.526 多线程[54069:31793118] str1:hello world str2:hello

      当一个可变字符串,赋值给一个strong修饰的,不可变字符串,,随后对可变字符串修改,不可变字符串会跟随着改变,

      当一个可变字符串,赋值给一个copy修饰的,不可变字符串,随后对可变字符串修改,不可变字符串不会随之改变,

      原因:copy修饰, 当可变字符串赋值时,会进行copy操作,是一个新的对象, 是一个新的指针, 并不指向这个可变字符.所有copy修饰的不可变字符,不会随着可变字符的修改后进行改变

    9 16:13:23.526 多线程[54069:31793118] str1:hello world str2:hello

  • 相关阅读:
    避免陷阱,重写Equals方法您需要注意的其中2个原则
    lucene入门资源汇总
    lucene vs zoie
    实时搜索的五个开源解决方案
    常用的数据标准化方法
    使用lucene实现社会化搜索
    openquery跨服务器传输数据
    错误:5061,ALTER DATABASE 失败
    Errore HTTP 404.2 Not Found
    DevExpress ASP.NET ASPxGridView使用方法大全
  • 原文地址:https://www.cnblogs.com/yuwei0911/p/7206453.html
Copyright © 2011-2022 走看看