iphone - 释放变量时出现段错误(EXC_BAD_ACCESS)

标签 iphone objective-c cocoa-touch memory-management

好的,我知道这个错误主要来自发送方法调用或试图访问已被释放的变量。

问题是:

.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 错误时的回溯 alt text

所以我正在向一个已被释放的对象发送消息,对吧?

所以我打开了 NSZombie,这阻止了我的崩溃。它没有像我希望的那样给我一些可爱的崩溃报告。相反,它只是防止程序崩溃。

在上面的 dealloc 方法中,如果我注释掉 [to release] 和 [from release],应用程序不会崩溃。如果我只注释掉其中一个……它不会崩溃。在调试窗口中 to 和 from 有不同的内存地址。

内存管理怎么这么难!!!!!

有什么线索吗?

谢谢,

最佳答案

在释放变量之后发送 [super dealloc] 消息,而不是之前。 [super dealloc] 应该是你在 dealloc 方法中做的最后一件事。

关于iphone - 释放变量时出现段错误(EXC_BAD_ACCESS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/562872/

相关文章:

ios - MKDirections 不在 iOS map 上显示路线

iphone - 并加载 NIB/XIB 文件?

iphone - CoreData DetailTableView BAD_ACCESS 错误

iphone - 我无法捕获 FMDB 空结果集

objective-c - 是否可以创建一个通用的 JSON 解析器?

ios - 如何在 RESTKit 中映射这个对象

ios - 在 iPhone 上存储静态内容?

iphone - 正则表达式检测 $<name> 时出现问题

iphone - 如何使用查找和替换在 Xcode 中用单个新行替换多个新行

objective-c - cocoa 缺少什么?