Только для iOS 7: сбой NSMapTable

#ios #objective-c #crash

#iOS #objective-c #сбой

Вопрос:

Я сохраняю что-то вроде кэша памяти в NSMapTable :

 // check for nils
if (key amp;amp; image) {
    // set object to NSMapTable
    [_mapTable setObject:object forKey:key]; // crash
}
  

К сожалению, в последнее время у меня возникли некоторые проблемы с этим методом. Сбой происходит довольно редко, только на iOS 7. Журнал сбоев указывает, что это происходит в строке выше, и показывает более подробную информацию:

 -- 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? Есть идеи, что может быть причиной?

Комментарии:

1. Вы когда-нибудь это понимали? Я тоже вижу, что это случается довольно редко, пару раз в день для многих пользователей.

2. @Dima То же самое для меня, на данный момент не нашел решения. Пожалуйста, ответьте здесь, если вы найдете какое-либо решение 🙂