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

其实老实讲, 定义**@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);
相关推荐
GEEKVIP12 小时前
选择 PDF 编辑器时要考虑什么?如何选择适用于 Windows 10 的 PDF 编辑器
网络·windows·ios·智能手机·pdf·编辑器·iphone
SchneeDuan1 天前
iOS-- Runtime
ios·objective-c·runtime·kvo·isa
互联网新声1 天前
camody卡魔迪-准备新一年双十一推出iPhone快充充电宝
ios·iphone
GEEKVIP1 天前
如何从数码相机中恢复已删除的照片
android·数码相机·macos·ios·电脑·手机·iphone
missmisslulu1 天前
好用的电容笔推荐!2024口碑最好的五款电容笔品牌测评推荐!
学习·ios·电脑·ipad·平板
Unity官方开发者社区1 天前
Unity 如何在 iOS 新增键盘 KeyCode 响应事件
unity·ios·计算机外设
盛书强2 天前
iOS H5 黑边解决方案
ios·webview
S0linteeH2 天前
iOS 18.1 將於 2024 年 10 月 28 日發布,並包含 Apple Intelligence 功能
macos·ios
刘小哈哈哈2 天前
iOS 多次获取图片主题色不一样
macos·ios·cocoa