0

我的应用程序在运行到 NSLog(@"...") 语句时崩溃,并且控制台上的日志显示一个对象被双重释放。我用僵尸仪器检查了一下,发现 myAreas 中的一根弦被释放了。但我不明白为什么会这样?有什么帮助吗?谢谢你。

NSString *myArea = @"Europe";
NSArray *myTimeZones = [NSTimeZone knownTimeZoneNames];
NSMutableArray *myAreas = [NSMutableArray arrayWithCapacity:1];
[myTimeZones enumerateObjectsWithOptions:NSEnumerationConcurrent usingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
    NSString *name = (NSString *)obj;
    if ([name hasPrefix:myArea]) {
        NSString *tmpArea = [name substringFromIndex:myArea.length+1];
        [myAreas addObject:tmpArea];
    }
}];
NSLog(@"My Cities in %@ time zone: %@", myArea, myAreas);
4

1 回答 1

0

NSMutableArray不是线程安全的,因此在不同线程中使用时可能会导致细微的错误,丢弃NSEnumerationConcurrent它应该可以正常工作。

于 2013-01-31T05:23:45.583 回答