启用ARC时,Objective-C类出现问题。
我的课程如下:
@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
我有另一个类似这样的课程:
@interface OtherClass : NSObject{
ParentClass *c;
}
@end
@implementation OtherClass
[...]
-(void)decode{
c = [[ChildClass alloc] init];
[c decodeMethod];
}
[...]
@end
如您所见,ChildClass
对象已创建并存储为OtherClass
中的属性。只要OtherClass
对象存在,ChildClass
指向的c
对象也应该存在,不是吗?好吧,我有一个 BAD_ACCESS错误,因为在ChildClass
初始化之后,在调用decodeMethod
之前,dealloc
中的ChildClass
方法是自动执行。
为什么呢? ARC
已启用,因此dealloc
方法应在ChildClass
对象释放时自动调用,但此时不应该发生,因为仍然指向{{1} }。
任何帮助?
非常感谢!
答案 0 :(得分:1)
@interface ChilldClass : ParentClass{
您的问题可能是由ChilldClass
(拼写错误?)