2012-02-21 2 views
2

У меня странная ошибка отладки после переноса моего проекта с Xcode 4.0 на Xcode 4.3.Я не могу использовать новый отладчик Xcode 4.3

Проект строится хорошо, без ошибок, но когда я что-то добавляю, каждый раз получаю ошибки при отладке, которые я работаю с освобожденными элементами.

Например, простой линии:

tableData=[[NSMutableArray] init]; 

дает ноль ponter

tableData=0x0000 

и странную ошибку в выходных окнах:

*** -[__NSDate description]: message sent to deallocated instance 0x8382d30 

В других местах это может быть не '__NSDate' но «UITableView», «NSString» и т. д. Такая же строка в том же проекте с xCode 4.0 не дает ошибок, но с проблемами Xcode 4.3.

Что не так? Не могли бы вы предложить что-то.

+0

Я тоже испытал эту проблему, используя LLDB в XCode 4.3. С чуть большим расследованием кажется, что после присвоения значения ivar, ivar объявляется сразу после того, как он имеет значение. Проблема не возникает при использовании GDB –

ответ

3

Линия:

tableData=[[NSMutableArray] init]; 

не является правильным. Правильная линия:

NSMutableArray *tableData = [[NSMutableArray alloc] init]; 

Кроме того, вы можете использовать эти строки для печати адреса памяти:

NSLog(@"%p", tableData); // print the tableData memory address 

или посмотреть в отладчике переменной панели. Не забудьте выпустить оперативную память:

[tableData release]; // release the memory 
+0

О, боже, конечно, я это делаю. – sinoptic

+0

Мой вопрос больше serios, чем просто отсутствие декларации! Конечно, я сделал это. 'NSMutableArray * tableData;' это переменная класса, и я просто не показываю объявление и освобождение памяти, так как это не вопрос! Я сказал, что проект строит ХОРОШЕЕ, никаких ошибок. С твоим комментарием считаю, что сборка проекта проекта просто невозможна. Мой вопрос все еще открыт. – sinoptic

+0

Не стесняйтесь редактировать свой вопрос, чтобы показать нам код, который, по вашему мнению, должен работать правильно. – bneely

5

Мой xCode только что установлен. Я решил проблему.

Перейти в Xcode
Продукт → Редактировать Схема ... → Информация

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

Я бы предложил GDB, потому что LLDB все же иногда показывает указатели 0x00000 сразу после выделения и инициализации.