Правильная отладка приложений IPhone на XCode - PullRequest
2 голосов
/ 13 сентября 2010

В строке ниже есть ошибка, вы можете увидеть ее невооруженным глазом?

NSString *title = [sender titleForState:UIControlStateNormal];
NSString *newText = [[NSString alloc] initWithFormat:"%@ button pressed.", title];

Когда симулятор Iphone выполняет эту строку, он падает без какой-либо другой информации . Я должен что-то упустить в отладке. Консоль мне ничего не показала.

Мне удалось выяснить ошибку, мой вопрос не об этом . Мой вопрос, почему я получаю тяжелый сбой без помощи XCode. Без какой-либо подсказки мне понадобилось 5 минут, прежде чем я смог понять свою опечатку.

Есть предложения? Или при программировании для IPhone мне просто нужно быть очень осторожным с опечатками?

РЕДАКТИРОВАТЬ: Я думаю, некоторые люди не видели это сразу, как я. Ошибка - отсутствие @ для строковой константы. Итак, теперь мой вопрос, почему XCode / Simulator не показывал мне никаких сообщений об ошибках, просто потерпел крах без каких-либо подсказок. Я что-то упускаю в отладке?

Ответы [ 4 ]

5 голосов
/ 13 сентября 2010

Objective-C не строго проверяет, что аргументы, которые вы передаете сообщениям, имеют правильный тип во время компиляции или во время выполнения.Это должно дать вам предупреждение, хотя.Здесь вы передаете переменную строку вместо строки NSString.Поскольку NSString являются объектами (на которые ссылаются с помощью указателя), ваш метод использует его в качестве указателя, а вы передаете его простой строкой.Затем вы, вероятно, пытаетесь получить доступ к недоступным блокам памяти ...

3 голосов
/ 13 сентября 2010

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

3 голосов
/ 13 сентября 2010

Я думаю, что вы пропустили @ до того, как нажата кнопка "% @".Правильным должно быть:

NSString *newText = [[NSString alloc] initWithFormat:@"%@ button pressed.", title];

Все константы NSString должны быть @"SOMETHING HERE";

1 голос
/ 13 сентября 2010

Я получаю следующую ошибку при компиляции вашего кода:

error: cannot convert 'const char*' to 'NSString*' in argument passing

Не уверен, что вам нужно сделать, чтобы показать вам, что я работаю в Obj-C ++.

Попробуйте добавить "-Wall" к "OtherWarningFlags" в настройках сборки вашей цели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...