Цель - прямая инициализация C (для действий в стиле Cocos2D) - PullRequest
1 голос
/ 19 июля 2011

У меня есть класс с инициализацией следующим образом:

@implementation MyClass
+(id) initializeMyClass
{
    return [[[self alloc] initMyClass] autorelease];
}

-(id) initMyClass
{
    if (([self = [super init]))
    {
    }
    return self;
}

-(void) dealloc
{
    NSLog(@"Deallocating");//I also used CCLOG instead.
    [super dealloc];
}
@end

Я инициализирую этот класс в другом классе без объекта:

[MyClass initializeMyClass];

Это работает нормально, но метод dealloc MyClass не вызывается и вылетает, поскольку некоторые ресурсы не освобождаются.

Это просто загадочно, и я ничего не могу найти в Интернете. Если бы кто-нибудь предложил решение или альтернативный метод, я был бы очень признателен.

Спасибо.

1 Ответ

0 голосов
/ 19 июля 2011

если вам нужно инициализировать ваш MyClass в другой класс, вы должны написать как

@implementation MyClass
+(id) initializeMyClass
{
    return [[[self alloc] initMyClass] retain];
}

-(id) initMyClass
{
    if (([self = [super init]))
    {
    }
    return self;
}

-(void) dealloc
{
    NSLog(@"Deallocating");//I also used CCLOG instead.
    [super dealloc];
}
@end
...