`
deng131
  • 浏览: 662246 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

assign,copy,retain之间区别

阅读更多
* assign: 简单赋值,不更改索引计数(Reference Counting)。
* copy: 建立一个索引计数为1的对象,然后释放旧对象
* retain:释放旧的对象,将旧对象的值赋予输入对象,再提高输入对象的索引计数为1


还可以这样理解:
* 使用assign: 对基础数据类型 (NSInteger)和C数据类型(int, float, double, char,等)
* 使用copy: 对NSString
* 使用retain: 对其他NSObject和其子类


总结:
copy是创建一个新对象,retain是创建一个指针,引用对象计数加1。
分享到:
评论
2 楼 deng131 2011-03-16  
恩  很好的理解
1 楼 tsyouaschen 2011-03-16  
assign表示直接传递引用给属性值
retain表示将某个对象引用传递给属性值时,属性值会将引用计数加一,也就是说,属性会自己额外保留一份引用.
举例子说.
NSObject a= [[NSObject alloc] init];
classb.oneProperty = a;
[a release];
如果是assign的话,a被release之后,classb的oneProperty就不能再被使用.
如果是retian的话,a被release之后,classb的oneProperty就可以继续使用.


assign主要是int,long,bool原始数据类型.你可以试一试当你用原始数据类型retain的时候,编译会报错的。

相关推荐

    ios_assign,retain和copy详解

    详细讲解了ios中常用关键字的使用方法的区别,着重讲解了assign,retain,copy之间的区别

    retain和copy还有assign的区别

    retain和copy还有assign的区别

    @property中的retain,copy,assign区别

    @property中的retain,copy,assign区别

    IOS中(assign,retain,copy,weak,strong)的区别以及nonatomic的含义

    我们在声明@property 属性时,总是要在括号中写上assign、retain、copy、weak、strong中的一个,很多时候,我们仅仅只是按照习惯去写经常写的那一个,但有时候看代码时又会发现别人用的不尽相同,那这些之间的区别是...

    iOS开发之详谈属性设置readwrite、readonly、retain、copy、assign、nonatomic

    主要介绍了iOS开发之详谈属性设置readwrite、readonly、retain、copy、assign、nonatomic的相关资料,需要的朋友可以参考下

    Objective-C内存管理课件.doc

    Objective-C内存管理课件.docx ,assign,retain,copy

    leetcode题库-iOS-Interview-Questions:收集整理iOS笔试面试题

    retain区别 HTTP的数据传输 动态绑定 subclass category protocol extension 区别 单例的实现 performSelector:withObject:方法的作用是什么? 解释一下多态 如何实现深拷贝 http和socket通信的区别,tcp和udp的区别...

    iOS 面试题

    3. 请问 property 的 作用,assign,copy,retain 的 区别; assign就是基本赋值 copy是重新创建一个oc对象,计数器是1 retain是对计数器+1 4.请写出实现多线程操作涉及的类及 简单 示例; NSThread, ...

    iOS面试题分享

    简述OC中内存管理机制。与retain配对使用的方法是dealloc还是release,为什么?需要与alloc配对使用的方法是dealloc还是...readwrite,readonly,assign,retain,copy,nonatomic 、atomic、strong、weak属性的作用

    iPhone开发、ObjectiveC_面试题目

    7、定义属性时,什么情况使用copy,assign,和retain 8、autorelease的对象是在什么时候被release的? 9、这段代码有什么问题,如何修改 10、for (int i = 0; i ; i++) { NSString *string = @”Abc”; ...

    OC中的@property属性问题

    Retain,copy,assign...

    iOS 对象属性详细介绍

    retain,strong, copy,weak,assign,readonly, readwrite, unsafe_unretained 下面来分别讲讲各自的作用和区别: retain,计数器加1, (增加一个指向内存的指针) 对应release(计数器-1) setter 方法对参数进行 ...

    iOS内存管理方面的面试题汇总

    如何检测内存泄漏? 如何解决循环引用?...对 retain,copy,assign,weak,_Unsafe_Unretain 关键字的理解; 深拷贝和浅拷贝的深刻理解; 自动引用计数应遵循的原则; Dealloc 的实现机制; 内存管理方案 ... ... ...

    IOS property属性详细介绍使用注意事项

    retain copy assign weak unsafe_unretained 方法命名 getter = setter = <name> 结论 1、原子性  (1)atomic  原子性,可以理解成就是生成getter、setter方法时,编译器会自动为程序添加同步锁,...

    简述iOS属性中的内存管理参数

    一,assign 代表设置时候直接赋值,而不是复制或者保留它。 二,retain. 会在赋值的时候把新值保留。此属性只能用于Object-C对象类型。 三,copy 在赋值时,将新值复制一份,复制工作由copy执行,此属性只对那些实行...

    iOS常见的几个修饰词深入讲解

    主要给大家介绍了关于iOS常见的几个修饰词的相关资料,iOS修饰词包括assign、weak、strong、retain、copy、nonatomic、atomic、readonly、readwrite,文中通过示例代码介绍的非常详细,需要的朋友可以参考下

    BlueToolInstall

    Licensee shall include reproductions of the Broadcom copyright notice with each copy of the Software and any Derivative Work, except where such Software is embedded in a manner not readily accessible...

    polycom宝利通视频会议软件3.9 2018

    You are not permitted to lease, rent, distribute, assign, sell or sublicense the SOFTWARE PRODUCT, in whole or in part, or to use the SOFTWARE PRODUCT in a time-sharing, subscription service, service...

Global site tag (gtag.js) - Google Analytics