启用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
对象时自动调用,但此刻不应该发生,因为它仍然指向c
。有什么帮助吗?
非常感谢你!
最佳答案
@interface ChilldClass : ParentClass{
您的问题可能是
ChilldClass
中的拼写错误引起的(典型错误?)关于ios - iOS ARC:意外的“dealloc”调用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16773720/