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