gpt4 book ai didi

iphone - NSMutableDictionary 导致 EXC_BAD_ACCESS

转载 作者:搜寻专家 更新时间:2023-10-30 19:58:37 25 4
gpt4 key购买 nike

我正在尝试修复在访问 tableView:cellForRowAtIndexPath:indexPath 中的 NSMutableDictionary 时抛出的 EXC_BAD_ACCESS 错误。现在,当我使用 loadHistoryFromDBExtended 方法填充 ridesDict 时,它可以正常工作,如下所示:

self.ridesDict = [self loadHistoryFromDBExtended]; 

NSLog(@"rides dict %@", self.ridesDict);

但是,我不想为每个正在加载的单元格调用 [self loadHistoryFromDBExtended],因为字典不会改变,所以我尝试移动:

self.ridesDict = [self loadHistoryFromDBExtended]; 

到 viewDidLoad,现在我在使用时收到 EXC_BAD_ACCESS 错误:

NSLog(@"rides dict %@", self.ridesDict);

在 tableView:cellForRowAtIndexPath:indexPath 中。从我读到的内容来看,我似乎遇到了一些内存保留/释放问题,但我似乎无法弄清楚。在调用 loadHistoryFromDBExtended 方法后,我在 viewDidLoad 中尝试了 [self.ridesDict retain],但这没有帮助。我对此很陌生,所以我很感激任何关于去哪里的指示。

编辑:这是 loadHistoryFromDBExtended 方法:

-(NSMutableDictionary *)loadHistoryFromDBExtended
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

FMDatabase* db = [FMDatabase databaseWithPath:[self getDBPath]];

if (![db open])
{
NSLog(@"Could not open db.");
[pool release];
}

//get users
FMResultSet *rs = [db executeQuery:@"SELECT * FROM R order by date desc"]; //query provides result set

//create result array
NSMutableDictionary *myDictionary = [[NSMutableDictionary alloc] init];

while ([rs next])
{
NSMutableArray *usersDictArray = [NSMutableArray array];

//look up names for id's
[usersDictArray addObject:[rs stringForColumn:@"rNames"]];
[usersDictArray addObject:[rs stringForColumn:@"dName"]];
[usersDictArray addObject:[rs stringForColumn:@"date"]];
[myDictionary setObject:usersDictArray forKey:[rs stringForColumn:@"rID"]];

[usersDictArray release];
}

//return usersArray;
return myDictionary;

[myDictionary release];

[pool drain];
}

最佳答案

我写这篇博客是为了帮助理解和调试 EXC_BAD_ACCESS

http://loufranco.com/blog/files/Understanding-EXC_BAD_ACCESS.html

从易到难

  1. 运行构建和分析——您是否获得了干净的构建?看看它在说什么,但你现在可以忽略泄漏问题——寻找向已释放对象发送消息的问题

  2. 使用 NSZombiesEnabled 运行——这使得对象永远不会解除分配,然后如果将消息发送到 retainCount 为 0 的对象则提示。

  3. 启用 Guard Malloc,然后使用特殊的 GDB 命令检查堆的完整性。问题是您需要在崩溃之前逐步完成并执行此操作以找到真正的问题。不过,它可能会在更接近您的问题的其他地方崩溃

关于iphone - NSMutableDictionary 导致 EXC_BAD_ACCESS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5853147/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com