Objective c 在超类中未调用Dealloc

Objective c 在超类中未调用Dealloc,objective-c,Objective C,我看到一些奇怪的行为,我不明白。 我有一个helper类HelperClass,它被分配并保留在超类超类中 在超类的dealloc函数中,我释放了HelperClass。这一切都很好。但是当我创建子类时,HelperClass被释放,但是HelperClass上由于某种原因没有调用dealloc。当我在子类中释放HelperClass时,它确实起作用 你知道这是怎么回事吗 (编辑:如果我显式地调用[HelperClass dealloc]而不是[HelperClass release],似乎效果

我看到一些奇怪的行为,我不明白。 我有一个helper类HelperClass,它被分配并保留在超类超类中

在超类的dealloc函数中,我释放了HelperClass。这一切都很好。但是当我创建子类时,HelperClass被释放,但是HelperClass上由于某种原因没有调用dealloc。当我在子类中释放HelperClass时,它确实起作用

你知道这是怎么回事吗

(编辑:如果我显式地调用[HelperClass dealloc]而不是[HelperClass release],似乎效果不错,但这是一种正确的方法吗?)

发起于:

- (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-ed。如果我专门在子类中释放helper,它会起作用。 释放子类时,将调用超类的dealloc,但不会调用helper中的dealloc

助手是一个简单的NSObject类:

@interface PlayerHelper : NSObject

你在这里是双重保留

[[[PlayerHelper alloc] init:self] retain];
而是使用:

[[PlayerHelper alloc] init:self];

什么是
超类的超类?您可以发布相关代码吗?向我们展示一些分配/取消分配HelperClass的代码,以及一个未取消分配HelperClass的具体示例。不要手动调用
dealloc
[[PlayerHelper alloc] init:self];