0
我看到一些我不明白的奇怪行爲。 我有一個助手類HelperClass,它分配並保留在超類SuperClass中。Dealloc沒有在超類中調用
在超類的dealloc函數中,我釋放了HelperClass。這很好。但是,當我的子類,HelperClass被釋放,但在HelperClass dealloc不會因爲某種原因而被調用。它在我釋放子類中的HelperClass時工作。
任何想法這可能是什麼?
(編輯:它似乎很好地工作,如果我顯式調用[助手類的dealloc]而不是[助手類發佈],但該這樣做的正確方法?)
@interface SuperClass : UIViewController {
@protected
PlayerHelper* _mediaPlayerHelper;
}
@end
啓動了:
- (void)viewDidLoad
{
[super viewDidLoad];
// Add observer/helper for audio events
_mediaPlayerHelper = [[[PlayerHelper alloc] init:self] retain];
}
用的dealloc:
- (void) dealloc {
if(_mediaPlayerHelper != nil) {
[_mediaPlayerHelper release];
}
[super dealloc];
}
如果我繼承此類似:
@interface SubClass : SuperClass
並釋放這個類,HelperClass沒有得到正確的解除分配。如果我特別在子類中釋放助手,它確實有效。 在釋放子類時,會調用超類的dealloc,但不是helper中的dealloc。
助手是一個簡單的NSObject類:
@interface PlayerHelper : NSObject
什麼是超'SuperClas s'?你能發佈相關的代碼嗎? – GarlicFries 2012-03-18 23:04:19
向我們展示一些您分配/取消分配HelperClass的代碼,以及HelperClass未取消分配的具體示例。不要手動調用'dealloc'。 – JiaYow 2012-03-18 23:06:10
更清楚了嗎? – 2012-03-18 23:17:50