2009-12-28 2 views
4

Я пытаюсь выполнить следующий код:Objective-C: переменная оптимизирована прочь компилятором

1. NSURL *checkLicenseURL = [NSURL URLWithString:@"check_license.php?accesskey=&license_key="]; 
// call server API 
2. NSError *err = nil; 
3. NSXMLDocument *xmlResult = [[NSXMLDocument alloc] initWithContentsOfURL:checkLicenseURL options:NSXMLDocumentTidyXML error:&err]; 

Но при взгляде на переменные в БГД, после того, как линия 1 была выполнена, делая

p checkLicenseURL 

возвращается

$1 = <variable optimized away by compiler> 

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

ответ

8

Просто скомпилируйте без включения оптимизации или выберите «отладочную» сборку, если вы использовали какой-то мастер для создания своего проекта. Я не уверен, где отключить оптимизацию в XCode, но вы, вероятно, хотите, чтобы эти GCC параметры командной строки для отладки:

-O0 -fno-inline 
+0

Я использую режим «отладки» в Xcode, но он по-прежнему дает эту ошибку , – Chetan

+0

Ничего, это был правильный ответ. – Chetan

5

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

volatile NSURL *checkLicenseURL = ... 

Wikipedia entry on volatile variables

Другой подобный вопрос: iPhone Variable Optimized Away by Compiler

Смежные вопросы