解除分配变量时获取段错误(EXC_BAD_ACCESS)

Dan*_*gan 3 iphone cocoa-touch memory-management objective-c

好吧,我知道这个错误主要来自发送方法调用或尝试访问已经解除分配的变量.

这是问题所在:

.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
Run Code Online (Sandbox Code Playgroud)

而且我的班级是dealloc.

-(void)dealloc{

    [super dealloc];    
    [to release];
    [from release];
    [information release];

}
Run Code Online (Sandbox Code Playgroud)

当我收到EXC_BAD_ACCESS错误时,这是​​追溯的事情 替代文字

所以我正在向已经解除分配的对象发送消息?

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

在上面的dealloc方法中,如果我注释掉[发布]和[从发布]应用程序不会崩溃.如果我只注释其中一个......它不会崩溃.在调试窗口中往返有不同的内存地址.

记忆管理怎么这么难!!!!

有人提出任何线索吗?

谢谢,

Ter*_*cox 13

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

  • [super dealloc]释放对象占用的内存,包括指向变量的指针. (3认同)