我仍然在學習Objective-C,並且有一條規則,它不會直接直接釋放對象。我不明白這意味着什麼。直接釋放對象
能有人給我這個規律被打破的例子..
這裏是它是如何應該做。
正確的方式
-(id)someMethod {
Class *object = [[Class alloc]init];
[object someMethod];
[object release];
}
以上被認爲是正確的..
那麼,什麼是壞的方式?提前致謝。
我仍然在學習Objective-C,並且有一條規則,它不會直接直接釋放對象。我不明白這意味着什麼。直接釋放對象
能有人給我這個規律被打破的例子..
這裏是它是如何應該做。
正確的方式
-(id)someMethod {
Class *object = [[Class alloc]init];
[object someMethod];
[object release];
}
以上被認爲是正確的..
那麼,什麼是壞的方式?提前致謝。
它永遠不會直接解除分配對象直接
這意味着,你不應該調用object
deallocate
方法直接:
-(void)someMethod {
Class *object = [[Class alloc]init];
[object someMethod];
[object release]; // <- it is correct
[object dealloc]; // <- error here!
}
不正確的方法是直接調用[object dealloc]
,這會破壞物體。一旦沒有人再保留它,它將被release
調用。
從來沒有取消分配對象直接
這意味着你永遠不應該發送-dealloc消息直接對象 - 爲唯一有效的情況發送的dealloc在dealloc的實現進行超:
- (void)dealloc{
...
[super dealloc];
}
還要注意,使用ARC(自動引用計數),即使在這種情況下也不應該調用dealloc。
'S /解除分配/的dealloc /';-) – DarkDust
我補充一點,方法是不正確的,因爲它必須返回一個ID,並且不返回任何 – Geoffroy
非常感謝:) 所有三個這樣回答道,你是一個很大的幫助。現在我明白了。 – Heartbound07