Objective - C直接初始化(对于Cocos2D风格的动作)

发布于 2024-11-24 17:47:00 字数 539 浏览 3 评论 0原文

我有一个类的初始化如下:

@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

我在另一个没有对象的类中初始化这个类:

[MyClassinitializeMyClass];

这工作正常,但 MyClass 的 dealloc 方法没有被调用并且崩溃,因为某些资源被没有被释放。

这完全令人费解,在网上找不到任何东西。 如果有人提出解决方案或替代方法,我将非常感激。

谢谢。

I have a class with initialization as follows:

@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

I initialize this class in another class without an object:

[MyClass initializeMyClass];

This works fine but the MyClass' dealloc method is not called and crashes since some resources are not freed.

This is totally puzzling and can't find anything online.
If anyone would suggest a solution or an alternative method, i'd really appreciate it.

Thank you.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一直在等你来 2024-12-01 17:47:00

如果您需要将 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

if you need to initialize your MyClass into another class then you should write like

@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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文