浅谈对property几个关键字的理解
来源:互联网 发布:网络机柜品牌 编辑:程序博客网 时间:2024/06/05 02:45
看了许多教程,对assign, copy, strong的总结差不多如下:
对于直接赋值的变量,如int,double,CGRect,使用assign;
对于NSString,使用copy;
对于对象类,使用strong(有时候是weak);
(关于weak与strong:weak变量只是指向内存地址,并没有持有)
但我个人使用NSString的时候写的修饰词一般是strong,也是可以正常运行的。
所以查了一下copy和strong的区别,主要是set方法有所不同
copy:release旧值,copy一个新对象,新对象的reference count为1
strong:将对象的引用计数+1并分配内存地址
@property (copy, nonatomic) NSString *copyStr;
@property (strong, nonatomic) NSString *strongStr;
如果二者被同样赋值
NSMutableString *str = @"123";
copyStr = str;
strongStr = str;
那么copyStr指向的内存地址与str是不同的,strongStr指向的内存地址与str相同
原因是copyStr是一个新对象,是深复制。
当[str appendingString:@"abc"]时,strongStr变化,copyStr并不会变化
我们一般并不希望NSString变量会随着赋值对象变化,所以使用copy深复制;
但我一般使用时是NSString为其赋值,所以copy和strong的效果是一样的。
0 0
- 浅谈对property几个关键字的理解
- 几个关键字的理解
- 浅谈对rss的理解
- 浅谈对Window的理解
- 浅谈对ActiveMQ的理解
- 浅谈对this的理解
- 浅谈对spring的理解
- 浅谈对spark的理解
- 浅谈对Context的理解
- 浅谈对handle的理解
- 浅谈对DHCP的理解
- 浅谈对软件工程的理解
- 对const关键字的理解
- 对const关键字的理解
- 对const关键字的理解
- 对const关键字的理解
- 对volatile关键字的理解
- 对synchronized关键字的理解
- Using GCC’s C++ Compiler
- django 1.8 官方文档翻译:5-2-2 表单素材 ( Media 类)
- grep的使用方法
- C语言程序设计(第二版)第9章例题
- c 语言下 TCP/UDP 通信
- 浅谈对property几个关键字的理解
- 包含min函数的栈(剑指offer+新概念题)模拟
- java面试遇到问题二 ------java编程语言的特点
- python 笔记4-- 函数式编程
- 基础数据结构--线性表实现
- WPF基础知识
- swift 类继承
- virtual 析构函数作用
- iOS开发脚踏实地学习day10-PickerView