我在NSMapTable
中保留了类似内存缓存的内容:
// check for nils
if (key && image) {
// set object to NSMapTable
[_mapTable setObject:object forKey:key]; // crash
}
不幸的是,最近我对这种方法遇到了一些问题。碰撞很少发生,仅在iOS 7上发生.Crashlog表示它发生在上面的行并显示更多细节:
-- Crashed: com.apple.root.default-priority ---
SIGABRT ABORT at 0x123456789
--- call stack ---
0
libsystem_kernel.dylib
__pthread_kill + 8
1
libsystem_pthread.dylib
pthread_kill + 58
2
libsystem_c.dylib
abort + 76
3
libsystem_malloc.dylib
free + 382
4
Foundation
-[NSConcreteMapTable grow] + 546
5
Foundation
-[NSConcreteMapTable setObject:forKey:] + 140
事实上,只有4& 5给出任何信息。我不知道这里有什么问题。因为它只发生在iOS7中,也许它是Apple的bug?任何想法可能是什么原因?