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