- 浏览: 696786 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
javenwong:
你好,我现在需要给一个Composite做圆角处理,不知道怎么 ...
SWT圆角窗口绘制 -
whao189:
回家了详细看看
Storyboard 解析 -
zhaoyubetter:
确实够麻烦
IOS 开发环境,证书和授权文件是什么? -
datawarehouse:
一直对这两个认为是一样的,现在学习了。
Oracle DB中的Schema -
yulanfeiyang:
顶,mark
下载音频,在IOS设备上播放
比如一个NSString 对象,地址为0×1111 ,内容为@”STR” Copy 到另外一个NSString 之后,地址为0×2222 ,内容相同,新的对象retain为1 ,旧有对象没有变化 retain 到另外一个NSString 之后,地址相同(建立一个指针,指针拷贝),内容当然相同,这个对象的retain值+1 retain 是指针拷贝,copy 是内容拷贝 下面分享一个网友的总结 一直以来个人觉得如果一个类是的property是readonly的那么再指定其他的如assign/retain/copy这样的属性就实在是没有什么意义了。确实你想想既然都readonly了,肯定是没有setter的,既然没有setter那么谈assign/retain/copy又有什么意义呢?所以一直以来我从来不对readonly的property加retain/copy属性申明,默认assign就足够了,simple is beautiful! 但是我现在发现我错了,其实一直都有一种这种感觉,只是没有找到100%的充分理由为readonly加上retain/copy。但是假如你要在你的subclass改写property,而加入你要改写的是一个NSString,你像把这个属性设置为readwrite和copy,往往杯具就发生了,编译时候可恶的warning 产生了,因为copy和之前默认的assign明显不相同啊! 终上,不论什么时候,都要为你的readonly的对象属性加上合适的retain/copy申明。你现在不用,但不说明你将来就不会用,出来混迟早都要还的! http://baike.baidu.com/view/5028218.htm 原来简单解释过属性定义(Property) ,并且提起了简单的retain,copy,assign的区别。那究竟是有什么区别呢? assign就不用说了,因为基本上是为简单数据类型准备的,而不是NS对象们。 Retain vs. Copy!! 那上面的是什么该死的意思呢? Copy其实是建立了一个相同的对象,而retain不是: 比如一个NSString 对象,地址为0×1111 ,内容为@”STR” Copy 到另外一个NSString 之后,地址为0×2222 ,内容相同,新的对象retain为1 ,旧有对象没有变化 retain 到另外一个NSString 之后,地址相同(建立一个指针,指针拷贝),内容当然相同,这个对象的retain值+1 也就是说,retain 是指针拷贝,copy 是内容拷贝。哇,比想象的简单多了… ------------------------------------------------------------------------------------------------------ 上面这篇文章来自:http://c.gzl.name/archives/339 自己研究了一下,,上面文章的说法是对的,,但是遗漏了一点东西. 他说 copy是内容的拷贝 ,对于像NSString,的确是这样. 但是,如果是copy的是一个NSArray呢?比如, NSArray *array = [NSArray arrayWithObjects:@"hello",@"world",@"baby"]; NSArray *array2 = [array copy]; 这个时候,,系统的确是为array2开辟了一块内存空间,但是我们要认识到的是,array2中的每个元素,,只是copy了指向array中相对应元素的指针.这便是所谓的"浅复制".了解到这一点非常重要.... @property (参数1,参数2) 类型 名字; 这里我们主要分析在括号中放入的参数,主要有以下三种: setter/getter方法(assign/retain/copy) 其中各参数说明如下: assign @property (nonatomic,retain)中的nonatom和retain是什么意思 @synthesize xxx; 为这个心属性自动生成读写函数; 如果你不懂怎么使用他们,那么就这样 ->
读写属性(readwrite/readonly)
atomicity(nonatomic)
默认类型,setter方法直接赋值,而不进行retain操作
retain
setter方法对参数进行release旧值,再retain新值,如下代码:
copy
setter方法进行Copy操作,与retain一样
nonatomic
1,getter=getterName,setter=setterName,设置setter与getter的方法名
2,readwrite,readonly,设置可供访问级别
2,assign,setter方法直接赋值,不进行任何retain操作,为了解决原类型与环循引用问题
3,retain,setter方法对参数进行release旧值再retain新值,所有实现都是这个顺序(CC上有相关资料)
4,copy,setter方法进行Copy操作,与retain处理流程一样,先旧值release,再Copy出新的对象,retainCount为1。这是为了减少对上下文的依赖而引入的机制。
5,nonatomic,非原子性访问,不加同步,多线程并发访问会提高性能。注意,如果不加此属性,则默认是两个访问方法都为原子型事务访问。锁被加到所属对象实例级。
发表评论
-
iphone编程之UILabel 用法详解
2012-12-18 14:38 1349这段代码动态的创建了一个UILabel,并且把相关常用的属 ... -
IOS用正则验证手机号
2012-12-14 12:01 17137- (BOOL)validateMobile:(NSStr ... -
UITableView技巧之去除UITableViewCell边框
2012-12-14 10:42 3549有时候想在UITableViewCell中加内容,但又不想要c ... -
MAC MySQL Workbench执行批量更新和删除的时候错误解决
2012-10-25 11:21 3948处理MySQL更新表时ErrorCode:1175.You a ... -
Objective-C编码风格指南
2012-10-17 17:00 1147参考资料: • Apple: Coding Guideline ... -
autorelease对象具体什么时候释放?
2012-09-19 15:21 991在项目中,会有一个默认的Autorelease pool,程序 ... -
Objective-C内存管理教程和原理剖析
2012-09-10 14:44 849此文涉及的内存管理是针对于继承于NSObject的Clas ... -
IOS开发内存释放小结
2012-09-03 17:34 5302内存释放是iphone开发过程中比较重的地方,所以在开辟内存后 ... -
为什么Android没有iOS那么顺滑
2012-08-29 14:38 856虽然很多Android手机的配 ... -
UITextView关闭键盘
2012-08-29 14:13 141381.如果你程序是有导航条的,可以在导航条上面加多一个Done的 ... -
Mac系统下查看鼠标所在点的RGB值--数码测色计
2012-08-29 14:05 1739苹果电脑的Mac OS X系统自带鼠标所在点颜色RGB值查看工 ... -
UIView你知道多少
2012-08-21 09:49 775曾经有人这么说过,在i ... -
Objective-C内存管理总结〜CC专版
2012-08-17 18:24 746iPhone系统中的Objective-C的内存管理机制是比较 ... -
iOS内存管理
2012-08-17 18:19 27881. 内总管理原则(引用计数) IOS的对象都继承于 ... -
IOS 获取当前系统时间的年、月、日、小时、分、秒
2012-08-14 17:33 6542NSCalendar *calendar = [[NSCa ... -
IOS判断是否为数字
2012-08-13 17:59 4850判断是否为整形: - (BOOL)isPureInt:(N ... -
self.用法
2012-08-09 14:55 801MyClass.h @interface MyClass ... -
#import与@class的区别
2012-08-08 17:13 8891.import会包含这个类的所有信息,包括实体变量和方法,而 ... -
iphone图标去掉光晕效果
2012-08-07 16:53 1107图片背景是透明的 如果想去掉光晕效果,就在info.plist ... -
去掉 App Store 内图标上部高亮效果的办法
2012-08-07 16:52 837苹果默认会在 App Store 里的应用图标上半部自 ...
相关推荐
针对iOS 对象的属性的关键字(retain/assign/readonly等)的区别。彻底解决您的疑惑。
retain和copy还有assign的区别
@property中的retain,copy,assign区别
这个属性是变量的默认属性,就是如果你 (readwrite and readonly 都没有使用,那么你的变量就是 readwrite属性 ) ,通过加入 readwrite 属性你的变量就会有 get 和 set 方法。 property(readonly,…) valueType ...
详细讲解了ios中常用关键字的使用方法的区别,着重讲解了assign,retain,copy之间的区别
对于Retain和Assign属性的理解
IOS中(assign,retain,copy,weak,strong)的区别以及nonatomic的含义 我们在声明@property 属性时,总是要在括号中写上assign、retain、copy、weak、strong中的一个,很多时候,我们仅仅只是按照习惯去写经常写...
retain,strong, copy,weak,assign,readonly, readwrite, unsafe_unretained 下面来分别讲讲各自的作用和区别: retain,计数器加1, (增加一个指向内存的指针) 对应release(计数器-1) setter 方法对参数进行 ...
简述OC中内存管理机制。与retain配对使用的方法是dealloc还是release,为什么?需要与alloc配对使用的方法是dealloc还是...readwrite,readonly,assign,retain,copy,nonatomic 、atomic、strong、weak属性的作用
readWrite readOnly 内存管理 strong retain copy assign weak unsafe_unretained 方法命名 getter = setter = <name> 结论 1、原子性 (1)atomic 原子性,可以理解成就是生成getter、setter...
Retain,copy,assign...
Objective-C内存管理课件.docx ,assign,retain,copy
SAS-The RETAIN Statement; Retain的用法,英文版。
主要给大家介绍了关于iOS常见的几个修饰词的相关资料,iOS修饰词包括assign、weak、strong、retain、copy、nonatomic、atomic、readonly、readwrite,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
通过对不同类型的对象进行retain和copy进行深浅拷贝详细测试分析
3. 请问 property 的 作用,assign,copy,retain 的 区别; assign就是基本赋值 copy是重新创建一个oc对象,计数器是1 retain是对计数器+1 4.请写出实现多线程操作涉及的类及 简单 示例; NSThread, ...
如何检测内存泄漏? 如何解决循环引用?...对 retain,copy,assign,weak,_Unsafe_Unretain 关键字的理解; 深拷贝和浅拷贝的深刻理解; 自动引用计数应遵循的原则; Dealloc 的实现机制; 内存管理方案 ... ... ...
RETAIN-Keras:重新实现RETAIN的Keras ,它允许创建高度可解释的递归神经网络模型以进行患者诊断,而不会降低模型性能 该存储库保留了Keras对RETAIN的重新实现,可以灵活地修改原始代码,引入了多个新功能,并提高...