好的,我知道这个错误主要来自发送方法调用或试图访问已被释放的变量。
问题是:
.h
@interface TimeEntry : NSObject <NSCopying, NSCoding> {
NSDate *from;
NSDate *to;
NSString *information;
}
@property (nonatomic, retain) NSDate *from;
@property (nonatomic, retain) NSDate *to;
@property (nonatomic, copy) NSString *information;
@end
还有我的类的 dealloc。
-(void)dealloc{
[super dealloc];
[to release];
[from release];
[information release];
}
这是当我收到 EXC_BAD_ACCESS 错误时的回溯
所以我正在向一个已被释放的对象发送消息,对吧?
所以我打开了 NSZombie,这阻止了我的崩溃。它没有像我希望的那样给我一些可爱的崩溃报告。相反,它只是防止程序崩溃。
在上面的 dealloc 方法中,如果我注释掉 [to release] 和 [from release],应用程序不会崩溃。如果我只注释掉其中一个……它不会崩溃。在调试窗口中 to 和 from 有不同的内存地址。
内存管理怎么这么难!!!!!
有什么线索吗?
谢谢,
丹
最佳答案
在释放变量之后发送 [super dealloc] 消息,而不是之前。 [super dealloc] 应该是你在 dealloc 方法中做的最后一件事。
关于iphone - 释放变量时出现段错误(EXC_BAD_ACCESS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/562872/