gpt4 book ai didi

iOS ARC : unexpected 'dealloc' call

转载 作者:行者123 更新时间:2023-11-29 03:53:42 32 4
gpt4 key购买 nike

当启用 ARC 时,我遇到了 Objective-C 类的问题。

我的类(class)如下所示:

@interface ParentClass : NSObject {
}

-(void)decodeMethod;
@end

@implementation ParentClass

-(void)decodeMethod{
}

@end

@interface ChilldClass : ParentClass{
int *buffer;
}
@end

@implementation ChildClass

-(id)init{
self = [super init];

if(self != nil){
buffer = (int *)malloc(20*sizeof(int));
}

return self;
}

-(void)dealloc{
free(buffer);
}

@end

我还有另一门类似的类(class):

@interface OtherClass : NSObject{
ParentClass *c;
}
@end

@implementation OtherClass

[...]

-(void)decode{
c = [[ChildClass alloc] init];

[c decodeMethod];
}

[...]

@end

如您所见,创建了一个 ChildClass 对象并将其作为属性存储在 OtherClass 中。只要 OtherClass 对象还活着,c 指向的 ChildClass 对象也应该活着,不是吗?嗯,我有一个 BAD_ACCESS 错误,因为在 ChildClass 初始化之后,在调用 decodeMethod 之前,dealloc > ChildClass 中的方法会自动执行。

为什么? ARC 已启用,因此当 ChildClass 对象被释放时,应该自动调用 dealloc 方法,但此时不应该发生,因为仍然用 c 指向。

有什么帮助吗?

非常感谢!

最佳答案

@interface ChilldClass : ParentClass{

您的问题可能是由 ChilldClass 中的拼写错误引起的(拼写错误?)

关于iOS ARC : unexpected 'dealloc' call,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16773720/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com