属性项目的定义(property)copy&retain的区别
来源:互联网 发布:java微信登录接口开发 编辑:程序博客网 时间:2024/05/17 04:08
原文链接:http://c.gzl.name/archives/85
- @property (copy, nonatomic) NSString *title;
什么是assign,copy,retain之间的区别?
- assign : 简单赋值,不更改索引计数(Reference Counting)。
- copy : 建立一个索引计数为1的对象,然后释放旧对象
- retain :释放旧的对象,将旧对象的值赋予输入对象,再提高输入对象的索引计数为1
retain的实际语法为:
- - (void)setName:(NSString *)newName {
- if (name != newName) {
- [name release];
- name = [newName retain];
- // name’s retain count has been bumped up by 1
- }
- }
说了那么麻烦,其实接下来的话最重要:
如果你不懂怎么使用他们,那么就这样 ->
- 使用assign: 对基础数据类型 (NSInteger,CGFloat)和C数据类型(int, float, double, char, 等等)
- 使用copy: 对NSString
- 使用retain: 对其他NSObject和其子类
Copy,retain的区别?
assign就不用说了,因为基本上是为简单数据类型准备的,而不是NS对象们。
Retain vs. Copy!!
- copy : 建立一个索引计数为1的对象,然后释放旧对象
- retain :释放旧的对象,将旧对象的值赋予输入对象,再提高输入对象的索引计数为1
那上面的是什么该死的意思呢?
Copy其实是建立了一个相同的对象,而retain不是:
比如一个NSString 对象,地址为0×1111 ,内容为@”STR”
Copy 到另外一个NSString 之后,地址为0×2222 ,内容相同,新的对象retain为1 ,旧有对象没有变化
retain 到另外一个NSString 之后,地址相同(建立一个指针,指针拷贝),内容当然相同,这个对象的retain值+1
也就是说,retain 是指针拷贝,copy 是内容拷贝。哇,比想象的简单多了…
nonatomic关键字:
atomic是Objc使用的一种线程保护技术,基本上来讲,是防止在写未完成的时候被另外一个线程读取,造成数据错误。而这种机制是耗费系统资源的,所以在iPhone这种小型设备上,如果没有使用多线程间的通讯编程,那么nonatomic是一个非常好的选择。
- 属性项目的定义(property)copy&retain的区别
- 属性项目的定义(property)copy&retain的区别
- Objective-C 2.0属性(Property) retain和copy的区别
- @property中retain和copy的区别
- @property,@synthesize的意义、readwrite,readonly,assign,retain,copy,nonatomic的定义和区别
- 属性特性copy和retain的区别
- property中属性retain,copy,assign的含义分别是什么
- @property 属性中retain 和copy 的具体实现
- objective-c中property 的属性strong,weak, retain, copy
- IOS语法- @property里的assign,copy,retain区别
- IOS系列-@property里的assign,copy,retain区别
- retain copy 的区别
- 属性项目的定义(property)
- 属性项目的定义(property)
- 属性项目的定义(property)
- 属性项目的定义(property)
- ObjC的Retain的属性和Copy的区别
- retain,assign,weak,strong,copy属性设置的区别
- Java Socket 4
- Unable to build: the file dx.jar was not loaded from the SDK folder!
- 文本过滤器FilteredTextBox使用范例一(简易计算器)
- 如何在Linux下查看windows的共享文件
- 注意细节和习惯(二)调试
- 属性项目的定义(property)copy&retain的区别
- xv6对硬盘的操作
- 基础加强第七天
- 鼠眼看Linux调度器 by raise_sail @ chinaunix
- wireless 4965 centos5.4 无线上网
- 备忘:关于serialport 在多线程下的问题
- 创业与"梦想"
- Windows 控件自绘(基于WTL的ListViewCtrl)
- 我的想法