首页 > 其他分享 >iOS NSString 使用Copy修饰,而不使用Strong修饰

iOS NSString 使用Copy修饰,而不使用Strong修饰

时间:2024-10-09 21:23:13浏览次数:18  
标签:NSMutableString NSLog self iOS tempStrongStr 修饰 Copy valueStr tempCopyStr

其实老实讲, 定义@property 属性,“使用Copy修饰,而不是用Strong修饰”这句话也不完全正确.因为如果他们对接的是不可变字符串,那么无论使用哪个都一样.

问题就出现在,如果他们对接的是可变字符串NSMutableString,那就得用copy

定义两个NSString 属性:

@interface ViewController ()

@property (nonatomic,copy)NSString * tempCopyStr;
@property (nonatomic,strong)NSString * tempStrongStr;

@end

如果将NSMutableString都分别赋值给他们,那么当NSMutableString改变时,strong修饰的tempStrongStr也会跟着改变,这个就不对啦.

代码如下:

 NSMutableString * valueStr = [[NSMutableString alloc]initWithString:@"123"];
    self.tempCopyStr = valueStr;  //copy修饰
    self.tempStrongStr = valueStr; //strong修饰
    
    NSLog(@"valueStr=11=%@",valueStr);      //控制台输出123
    NSLog(@"tempCopyStr=11=%@",self.tempCopyStr);  //控制台输出123
    NSLog(@"tempStrongStr=11=%@",self.tempStrongStr);  //控制台输出123
    
    [valueStr appendString:@"456"];  //修改可变字符串valueStr的值
    
    NSLog(@"valueStr=22=%@",valueStr); //控制台输出123456
    NSLog(@"tempCopyStr=22=%@",self.tempCopyStr);  //控制台输出123
    //控制台输出123456,问题就出现在这里了,我改变的是valueStr的值,关self.tempStrongStr什么事?
    //所以如果需要操作的字符串(数据源)是可变NSMutableString类型,则需要用copy,不能用Strong.
    NSLog(@"tempStrongStr=22=%@",self.tempStrongStr);

标签:NSMutableString,NSLog,self,iOS,tempStrongStr,修饰,Copy,valueStr,tempCopyStr
From: https://blog.csdn.net/wyz670083956/article/details/142796885

相关文章

  • 基于Vue3+pinia+vue-router+axios+element-plus等开发的新闻发布管理系统
    新闻发布管理系统是一个基于Vue3+pinia+vue-router+axios+element-plus等开发的系统,主要功能包括:登录模块、注册模块、新闻分类管理模块、新闻管理模块、个人中心模块(包括基本资料、更换头像、重置密码功能)等。代码下载:源码下载基于Vue3开发的新闻发布管理系统,使用的前端......
  • java_day9_包的划分、形式参数、返回值、修饰符、内部类、匿名内部类
    一、包包的划分好处:1、方便管理我们的代码文件2、不同包下的文件名可以是一样的常见的包命名规则:1、按照功能划分增加-学生增加-老师增加删除-学生删除-老师删除修改......
  • const和readonly修饰的成员,静态构造函数以及对于变量的访问{get;set}
    第一,const修饰的数据类型定义:按照publicconstinttest=20;的格式进行声明,const修饰的数据类型叫做常量。注意:1访问时只能通过类名加变量名访问。      2必须在声明的时候就赋值。      3常量是不可修改的值。代码如下:usingSystem.Collection......
  • 使用iostat监控磁盘使用
    tps每秒传输的次数Kb_read/s每秒从设备读出的数据量Kb_wrtn/s每秒向设备写入的数据量Kb_read从设备读出的数据总量Kb_wrtn向设备写入的数据总量每秒刷新一次数据[root@sre01~]#iostat1Linux3.10.0-1062.el7.x86_64(sre01)10/04/2024_x86......
  • VMware ESXi 7.0U3q macOS Unlocker & OEM BIOS 2.7 Dell HPE 联想定制版 9 月更新发
    VMwareESXi7.0U3qmacOSUnlocker&OEMBIOS2.7标准版和厂商定制版ESXi7.0U3标准版,Dell(戴尔)、HPE(慧与)、Lenovo(联想)、Inspur(浪潮)、Cisco(思科)、Fujitsu(富士通)、Hitachi(日立)、NEC(日电)OEM定制版请访问原文链接:https://sysin.org/blog/vmware-esxi-......