super dealloc

施利
2023-12-01
iPhone开发的时候就没有垃圾回收机制。最后一行的[super dealloc];非常重要。我们必须要发送消息去让父类清除它自己。
假如不这么做的话,这个对象其实没有被清除干净,存在内存泄露。
dealloc在垃圾回收机制下不会被调用到。
初始化
我们可以创建一个初始化方法去给类的实例的成员变量赋初值:
  1.  - (id) init  
  2. {      if ( self = [super init] )  
  3.     {          [self setCaption:@"Default Caption"];  
  4.         [self setPhotographer:@"Default Photographer"];      }  
  5.     return self;  

这个是一个单等于号,就是把[super init]的值赋给了self 它基本上是在调用父类去实现它的初始化。这个if代码段是设置默认值之前验证初始化是否成功
释放资源Dealloc
这个dealloc方法是在当一个对象希望被从内容里面删除的时候调用。这个我们释放在子类里面引用成员变量的最好的时机:
[pre]
  1. - (void) dealloc  
  2.     [caption release];  
  3.    [photographer release];     [super dealloc];  
[/pre] 开始两行我们发送了release通知给了两个成员变量。我们不要在这里用autorelease。用标准的release更快一点。
最后一行的[super dealloc];非常重要。我们必须要发送消息去让父类清除它自己。假如不这么做的话,这个对象其实没有被清除干净,存在内存泄露。
dealloc在垃圾回收机制下不会被调用到。取而代之的是,我们需要实现finalize方法。
 类似资料:

相关阅读

相关文章

相关问答