2

При публикации уведомлений с NSNotificationCenter существует ли какая-либо причина, почему в NSMutableDictionary используется вместо NSDictionary, поскольку пользовательская информация может вызвать сбой?Есть ли причина, по которой использование NSMutableDictionary приведет к сбою NSNotificationCenter?

- (void)postNotificationName:(NSString *)aName object:(id)anObject userInfo:(NSDictionary *)aUserInfo; 

Я вижу следующий журнал аварии:

Exception Type: SIGSEGV 
Exception Codes: SEGV_ACCERR at 0xffffffffe0000008 
0 libobjc.A.dylib      0x31516fbc objc_msgSend + 16 
1 Foundation       0x3195b50f __57-[NSNotificationCenter addObserver:selector:name:object:]_block_invoke_0 + 19 
2 CoreFoundation      0x37a02577 ___CFXNotificationPost_block_invoke_0 + 71 
3 CoreFoundation      0x3798e0cf _CFXNotificationPost + 1407 
4 Foundation       0x318cf3fb -[NSNotificationCenter postNotificationName:object:userInfo:] + 67 
+0

есть ли какая-либо другая информация в журнале сбоев (например, например, какая ошибка, есть ли исключение и т. Д.)? –

+0

Это SIGSEGV. –

+2

Вы уверены, что экземпляр NSMutableDictionary действителен (т. Е. Не был выпущен), а также данные внутри него действительны? Вы видите сбой, когда вы передаете 'nil' для последнего параметра? – dasblinkenlight

ответ

3

Это кажется, что ваш наблюдатель сбой приложения. Вы удалили его из списка наблюдателей до dealloc?

+0

Да, шансы на то, что уведомитель поехал. –