iPhone开发之属性变量如何Release

移动开发 iOS
iPhone开发之属性变量如何Release是本文要介绍的内容,主要是为了释放对象拥有的实例变量,常用的方法是在dealloc中调用release,来看详细内容。

iPhone开发之属性变量如何Release是本文要介绍的内容,主要是为了释放对象拥有的实例变量,常用的方法是在dealloc中调用release,比如下面的代码:

  1. @interface MyClass : NSObject {    
  2. NSString *name;  
  3. }    
  4. @end   
  5. @implementation MyClass//something...  
  6. - (void)dealloc{    
  7. [name release];    
  8. [super dealloc];  
  9. }   
  10. @end 

如果这里的name是属性变量呢?在IPhone开发基础教程这本书里,你会经常在看到这样的代码:

  1. @interface MyClass : NSObject {    
  2. NSString *name;  
  3. }  
  4.  @property(retain) NSString *name;   
  5.  @end   
  6.  @implementation MyClass @synthesize name;  
  7.   - (void)dealloc{  self.setName = nil;    
  8.   [super dealloc];  
  9.   }   
  10. @end 

这里并没有直接访问变量本身,而是使用了编译器自动生成的setter。那问题就来了,咋的一赋值成nil,就能release了?想想看一般的setter的是怎么写的,看下面:

  1. - (void) setName:(NSString *)   
  2. value {     
  3. [value retain];   
  4. // calls [nil retain], which does nothing   [name release];   
  5. // releases the backing variable (ivar)   name = value;     
  6. // sets the backing variable (ivar) to nil} 

ok,很方便的写法。但是不是说就没有问题呢?请参考下面的讨论,在KVC机制中是会有问题的。

  1. http://stackoverflow.com/questions/192721/why-shouldnt-i-use-objective-c-2-0-accessors-in-init-dealloc  
  2.  
  3. http://stackoverflow.com/questions/1283419/valid-use-of-accessors-in-init-and-dealloc-methods 

小结:iPhone开发之属性变量如何Release的内容介绍完了,希望通过本文的学习能对你有所帮助!

责任编辑:zhaolei 来源: 博客园
相关推荐

2011-08-01 18:27:58

iPhone开发 UISearchBa

2011-08-10 10:10:21

iPhoneUIPopoverCo

2011-08-10 09:50:43

iPhoneArchive数据

2011-08-11 10:03:43

iPhonecocoaNSRunLoop

2011-08-08 13:57:19

iPhone开发 打包 DEB

2013-07-23 07:34:54

iOS开发学习适配iphone5

2011-08-22 13:46:15

iPhone开发GameKit 蓝牙

2011-08-09 11:36:41

iPhoneUIPickerVieDEMO

2011-08-12 11:31:46

iPhoneUIView动画

2011-07-27 09:33:14

iPhone 网络 Web

2011-08-11 17:15:54

iPhone归档

2011-07-18 14:39:53

iPhone SDK UIKit

2011-06-07 17:16:47

iPhone 数据

2013-07-25 15:15:26

iOS开发学习iOS全局变量

2011-08-17 15:19:38

iPhone应用数据

2011-08-18 10:59:57

iPhone开发消息通信NSNotificat

2011-08-18 10:02:47

iPhone SDKOpenFlow

2011-08-18 09:52:13

iPhone SDKUIPageContr

2011-07-07 15:45:45

iPhone SQLite 数据

2011-08-03 16:01:24

iPhone应用开发 自动登陆
点赞
收藏

51CTO技术栈公众号