EXC_BAD_ACCESS 关于 class 中的方法
EXC_BAD_ACCESS on method in class
我的 SQLiteManager.m
实现中有以下方法。警告:旧遗留代码警报
- (void)dealloc {
[super dealloc];
if (db != nil) {
[self closeDatabase];
}
[databaseName release];
}
- (NSError *) closeDatabase
{
NSError *error = nil;
if (db != nil) {
// Set and log error somewhere, not relevant here
}
db = nil;
}
return error;
}
当我 运行 我的应用程序在 iOS 10 iPad 处于调试模式时,它 运行 没问题。当我 运行 我的应用程序在 iOS 10 iPad 上处于发布模式时(具有开发证书和配置文件),应用程序在 [self closeDatabase];
行崩溃,返回 EXC_BAD_ACCESS
.我在我的控制台中看到 self
仍然是一个 SQLiteManager 对象。怎么可能在你自己的 class 中引用一个方法会导致错误的访问错误,而且只在发布模式下?
PS:当我 运行 和 NSZombieEnabled = YES
时,应用 运行 没问题。
我找到了答案。我不得不将调用 [super dealloc];
置于覆盖的 dealloc
方法的末尾。
- (void)dealloc
{
if (db != nil) {
[self closeDatabase];
}
[databaseName release];
[super dealloc];
}
我的 SQLiteManager.m
实现中有以下方法。警告:旧遗留代码警报
- (void)dealloc {
[super dealloc];
if (db != nil) {
[self closeDatabase];
}
[databaseName release];
}
- (NSError *) closeDatabase
{
NSError *error = nil;
if (db != nil) {
// Set and log error somewhere, not relevant here
}
db = nil;
}
return error;
}
当我 运行 我的应用程序在 iOS 10 iPad 处于调试模式时,它 运行 没问题。当我 运行 我的应用程序在 iOS 10 iPad 上处于发布模式时(具有开发证书和配置文件),应用程序在 [self closeDatabase];
行崩溃,返回 EXC_BAD_ACCESS
.我在我的控制台中看到 self
仍然是一个 SQLiteManager 对象。怎么可能在你自己的 class 中引用一个方法会导致错误的访问错误,而且只在发布模式下?
PS:当我 运行 和 NSZombieEnabled = YES
时,应用 运行 没问题。
我找到了答案。我不得不将调用 [super dealloc];
置于覆盖的 dealloc
方法的末尾。
- (void)dealloc
{
if (db != nil) {
[self closeDatabase];
}
[databaseName release];
[super dealloc];
}