[ios]iOS开发之self.abc = nil与[_abc release]的区别【转】
来源:互联网 发布:淘宝网打底衫女 编辑:程序博客网 时间:2024/05/29 02:39
前者使用property的点操作符,也就相当于调用了abc对应的set method,和这句是一样的:[self setAbc:nil];
而后者没有通过property,直接访问了成员变量,调用了它的release方法。
对于set method来说,用synthesize来让系统帮我们生成的set方法和如下的类似:
- (void)setAbc:(id)newAbc
{
if(_abc != newAbc){
[_abc release];
_abc = [newAbc retain]; //是retain还是copy取决于你property声明时的attributes
}
}
如果新值和成员相等,就不需要进行重复的赋值了,不等的话,需要把新值赋给成员,同时,成员_abc原来的内容就不需要了,这里要先调用release进行释放。(这个具体的原因在那本讲Objective-C的书中写的很清楚,请查看)。
因此在这里,调用self.abc = nil;
就等于掉了[_abc release]; 和_abc = nil;
self.abc = nil;和[_abc release]; 都不一定释放对象,因为该对象还可能被别的引用,这里的操作的意图就是:别的地方用没用_abc我不知道,在这里的_abc我不用了。
在用retain或者copy的property attributes的时候,self.abc = nil;等于如下语句:
if(_abc!= nil)
{
[_abc release];
_abc = nil; //message sent to nil returns nil.
}
所以用起来更简单一点。
- [ios]iOS开发之self.abc = nil与[_abc release]的区别【转】
- iOS开发之self.abc = nil与[_abc release]的区别
- self.abc = nil [abc release]的区别
- self.abc = nil 和 [abc release]的区别
- IOS内存nil与release的区别
- IOS内存nil与release的区别
- [IOS 开发] self.myOutlet = nil 和 myOutlet = nil的区别
- IOS开发之内存管理self.prop=nil; vs. [prop release];prop=nil;
- iOS中nil与release的区别与用法
- IOS开发中nil与release
- iOS中nil和release 的区别
- iOS中nil和release的区别
- (0047)iOS开发之nil/Nil/NULL的区别
- iOS开发 nil,Nil,NULL的区别
- iOS开发nil/Nil/NULL的区别
- ios深究release与nil
- ios学习路线—Objective-C(nil与release的区别与用法)
- IOS开发中nil和release的用法
- IOS(CGContent画曲线)
- CGContextAddArc
- [ios] NSSet,NSMutableSet[zhuan]
- [ios]NSArray中的数据进行排序 ---- sortedArrayUsingDescriptors
- [ios]精通UIPasteboard 粘贴板 【转】
- [ios]iOS开发之self.abc = nil与[_abc release]的区别【转】
- [ios]检查自己写的程序有没有内存泄露【转】
- [ios] UIWebView的离线缓存【转】
- [ios2]SHA1,MD5加密
- [ios] NSData
- [ios] NSJSONSerialization使用 【转】
- [面试题] ios,c
- [ios] 适应键盘高度变化
- [ios] alertview自定义提示信息【转】