在head first iphone development中看到关于属性的readwirte和retain有如下解释,
readwrite:When you want the property to be modifiable by people. The compiler will
generate a getter and a setter for you. This is the defaultretain:When you’re dealing with object values. The compiler will retain the value
you pass in and release the
old value when a new one comes in.请问readwrite自动生成的代码中,setter方法的实现是retain新的对象并release旧的对象吗?我觉得默认的readwrite属性应该符合内存管理的要求。
readwrite:When you want the property to be modifiable by people. The compiler will
generate a getter and a setter for you. This is the defaultretain:When you’re dealing with object values. The compiler will retain the value
you pass in and release the
old value when a new one comes in.请问readwrite自动生成的代码中,setter方法的实现是retain新的对象并release旧的对象吗?我觉得默认的readwrite属性应该符合内存管理的要求。
解决方案 »
- 关于XCode版本和sqlite3 的问题,,急,谢谢
- 有做过短信截获这方面的吗?
- iphone开发 两个视图跳转问题(急,求指导!3Q)
- 塞班平台:关于呼叫转移的一个问题。
- IPhone中的各种Gesture间的区别以及程序中如何界定
- nsxmlparser解析xml出错
- ios 开发,让uitableviewcell自适应图片高度,宽度固定,再者是按比例缩放
- 请教:陌陌, 微博, 微信之类的 server端架构是什么样的啊?
- UIButton控件的enable值设定为NO,按钮还是可以点击?小白求指导
- 请问使用黑苹果影响开发吗?
- objC 提示我找不到我自己定义的类
- 手指轻扫屏幕成功时,如何能够发出声音
retain可以简单的理解引用计数加一,你现在要用就retain,用完得releasesetter只是简单的赋值,没那么复杂的。不可能读写一次属性就会分配再释放一段内存。创建这个属性的时候这段内存已经分配好了,来新的就retain,旧的就释放了(系统做的)。
-(void)setMyObject:(id)newValue{
if (_myObject != newValue) {
[_myObject release];
_myObject = [newValue retain];
}
}
当你在你的析构函数里或者其他位置: self.yourObject = nil; 时yourObject的内存就会自动被释放
generate a getter and a setter for you. This is the default
这个不要管,除非你只指定readretain:When you’re dealing with object values. The compiler will retain the value
you pass in and release the
old value when a new one comes in
这个关键字也是不要管的,作用就是保证你在用这个对象是不会释放,内存管理不需要你动手
表明了属性是可读写的。这是默认的参数
表示属性具有获取器和设置器一对访问器方法
re ado n l y
表明了属性是只读的,且只有获取器方法
如果试图对属性使用点语法赋值,将引发编译
错误