Вопрос по objective-c, iphone, memory-management – нужно ли выпускать NSInteger в iphone?

5

я получаю эту ошибку, кто-то знает об этом ??? 2009-07-08 18: 42: 36.778 FlashCards [1297: 20b] Категория Id = 1 FlashCards (1297,0xa0690fa0) malloc:* error for object 0x4fd78a0: pointer being freed was not allocated FlashCards(1297,0xa0690fa0) malloc: * ошибка для объекта 0x4fdc200: двойное освобождение *** установить точку останова в malloc_error_break для отладки

Ваш Ответ

3   ответа
0

как отладить эту проблему: установите точку останова на malloc_error_break. В Xcode откройте окно точек останова (option-cmd-B). В поле «Двойной щелчок по символу» введитеmalloc_error_break, Перезапустите приложение в отладчике (выберите «Отладка» в меню «Выполнить»). Отладчик остановится в точке ошибки, о которой вы сообщили. В этот момент я бы исследовал трассировку стека, чтобы найти, где вы дважды освободили эту память.

В Xcode выберите Run-> Show-> gt; Точки останова (из меню Run) или нажмите одновременно клавиши option, cmd и B. На появившейся панели «Точки останова» дважды щелкните в поле с надписью «Двойной щелчок для символа». и введите & quot; malloc_error_break & quot; (без кавычек).
установить точку останова на malloc_error_break. В Xcode откройте окно точек останова (option-cmd-B). В поле «Двойной щелчок для символа» введите malloc_error_break. Перезапустите ваше приложение в отладчике (выберите «Отладка» в меню «Выполнить»). Пожалуйста, объясните это более подробно ... где я могу установить точку останова на malloc_error_break. Rahul Vyas
где находится точка останова & quot; malloc_error_break & quot; Rahul Vyas
как мы отслеживаем стек, чтобы найти, где находится фактическая ошибка. означает, какая строка вызывает ошибку Rahul Vyas
16

NSInteger не является объектом; это просто typedef дляint (для 32-битных приложений) илиlong (для 64-битных приложений):

#if __LP64__
typedef long NSInteger;
#else
typedef int NSInteger;
endif
расскажите мне об ошибке, как мне найти, какой объект дает ошибку? Rahul Vyas
Похоже, вы вызываете release для NSInteger, что вы не можете сделать, потому что это не объект.
3

он не является объектом, который может реагировать на такие методы, как retain или release. Хотя он назван аналогично классам Какао, таким как NSNumber или NSValue, он фактически обрабатывается так же, как int, float и т. Д.

расскажите мне об ошибке, как мне найти, какой объект дает ошибку? Rahul Vyas

Похожие вопросы