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

news/2024/10/21 5:41:17/

其实老实讲, 定义@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);      //控制台输出123NSLog(@"tempCopyStr=11=%@",self.tempCopyStr);  //控制台输出123NSLog(@"tempStrongStr=11=%@",self.tempStrongStr);  //控制台输出123[valueStr appendString:@"456"];  //修改可变字符串valueStr的值NSLog(@"valueStr=22=%@",valueStr); //控制台输出123456NSLog(@"tempCopyStr=22=%@",self.tempCopyStr);  //控制台输出123//控制台输出123456,问题就出现在这里了,我改变的是valueStr的值,关self.tempStrongStr什么事?//所以如果需要操作的字符串(数据源)是可变NSMutableString类型,则需要用copy,不能用Strong.NSLog(@"tempStrongStr=22=%@",self.tempStrongStr);


http://www.ppmy.cn/news/1538694.html

相关文章

利用编程思维做题之将两个有序的单链表合并成一个新的有序单链表

1. 理解问题 将两个有序的单链表合并成一个新的单链表,并且保持有序。每个链表的元素按照升序排列,合并后的链表也需要保持升序。 示例: 假设我们有两个有序链表: 链表 1:1 -> 3 -> 5链表 2:2 -&g…

python爬虫 - 深入requests模块

🌈个人主页:https://blog.csdn.net/2401_86688088?typeblog 🔥 系列专栏:https://blog.csdn.net/2401_86688088/category_12797772.html 目录 前言 一、下载网络文件 (一)基本步骤 (二&…

【C++几种单例模式解读及实现方式】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、单例是什么?二、解读1.懒汉式2.饿汉式3.static变量特性4.call_once特性 总结 前言 单例模式几乎是每种语言都不可少的一种设计模式&#xff0c…

Redis 典型应用之缓存

目录 1. 缓存的基本概念 2. 使用 Redis 作为缓存 3. 缓存的更新策略 3.1 定期生成 3.2 实时生成 3.2.1 内存淘汰策略 1. FIFO (First In First Out) 先进先出 2. LRU (Least Recently Used) 淘汰最久未使使用的 3. LFU (Least Frequently Used) 淘汰访问次数最少的 4…

【uni-app】HBuilderX安装uni-ui组件

目录 1、官网找到入口 2、登录帐号 3、打开HuilderX 4、选择要应用的项目 5、查看是否安装完成 6、按需安装 7、安装完毕要重启 8、应用 前言:uniapp项目使用uni-ui组件方式很多,有npm安装等,或直接创建uni-ui项目,使用un…

操作系统15

设备分配与回收 1.数据结构:系统设备表、设备控制表、控制器控制表、通道控制表 2.分配原则 (1)要充分发挥设备的使用率,尽可能让设备忙碌,但又避免由于不合理的分配方法造成的死锁 (2)要做到…

报错 - llama-index pydantic error | arbitrary_types_allowed | PydanticUserError

国庆节前使用 LiteLLMEmbedding 设置 llama-index Settings.embed_model 还好好的,回来后,就就报错,试着降级 llama-index 也无用;设置 Settings.llm 也是好好地。 解决方法:conda 重新创建环境后,在安装 …

CVPR 2024最佳论文候选-pixelSplat论文解读

目录 一、概述 二、相关工作 1、单场景下的视角合成 2、基于先验的三维重建和视图合成 3、多视图几何测量 三、3DGS的缺点 1、容易陷入最小值 2、需要大量输入图像 3、尺度模糊性 四、pixelSplat 1、解决尺度模糊性(深度信息生成) 2、编码器…