我还在学习Objective-C并且有一条规则,它永远不会直接直接释放对象。我不明白这意味着什么。
有人能举例说明这条规则被打破了吗?
这是应该如何完成的。
正确的方式
-(id)someMethod {
Class *object = [[Class alloc]init];
[object someMethod];
[object release];
}
以上认为是正确的。
那么糟糕的方式是什么?提前谢谢。
答案 0 :(得分:4)
永远不要直接释放对象
这意味着你永远不应该直接向对象发送-dealloc消息 - 唯一有效的情况就是在dealloc实现中将dealloc发送到超类:
- (void)dealloc{
...
[super dealloc];
}
另请注意,使用ARC(自动引用计数)时,即使在这种情况下也不应调用dealloc。
答案 1 :(得分:2)
永远不会直接直接释放对象
这意味着您不应直接调用deallocate
object
方法:
-(void)someMethod {
Class *object = [[Class alloc]init];
[object someMethod];
[object release]; // <- it is correct
[object dealloc]; // <- error here!
}
答案 2 :(得分:1)
不正确的方法是直接调用[object dealloc]
,这会破坏对象。一旦没有人再保留它,release
就会调用它。