Подтвердить что ты не робот

Строковое значение всегда показывает ноль в объекте C

Я обновился до Xcode 5.0. И когда я запускаю приложение в режиме отладки и пытаюсь напечатать значение NSString в консоли, это дает мне ошибку ниже. Любые идеи?

error: warning: couldn't get cmd pointer (substituting NULL): Couldn't load '_cmd' because its value couldn't be evaluated
Couldn't materialize struct: the variable 'stringValue' has no location, it may have been optimized out
Errored out in Execute, couldn't PrepareToExecuteJITExpression

Вот код:

NSString *stringValue = [[self.responseArray objectAtIndex:i] valueForKey:@"merchant_name"]; 
4b9b3361

Ответ 1

Причина указана в сообщении об ошибке: она, возможно, была оптимизирована.. это означает, что вы компилируете и запускаете свой код оптимизированным образом.

вам нужно изменить уровень оптимизации вашего компилятора с Fastest,Smallest до none:

  • перейти к настройкам вашей целевой сборки.
  • поиск уровня оптимизации
  • измените его на none (независимо от того, в каком режиме вы находитесь: отладка, распространение или выпуск)

сделать то же самое для ваших настроек проекта

Ответ 2

Убедитесь, что вы находитесь в режиме отладки. Перейти Изменить схему > Конфигурация сборки > Отладка

Ответ 3

Возможно, вы пытаетесь отлаживать "схему выпуска". Перейдите в "Product/Scheme/Edit Scheme" и выберите "run" на левой панели. Затем измените конфигурацию сборки на "debug".

Ответ 4

Один альтернативный ответ: вместо исправления "он, возможно, был оптимизирован", удалив оптимизацию, вы можете остановить его от оптимизации с помощью переменной.

Итак, в вашем вопросе, если вы что-то делаете с stringValue:

NSString *stringValue = [[self.responseArray objectAtIndex:i] valueForKey:@"merchant_name"]; 
NSLog(@"%@", stringValue);

stringValue больше не будет оптимизирован, потому что вы его используете.

Если вы хотите просмотреть все экземпляры оптимизированных переменных в своем проекте, используйте Продукт Анализ для анализа вашего проекта. Любые предупреждения "Dead store" (в которых значение сохраняется и никогда не читается) будут оптимизированы во время компиляции, если вы включили оптимизацию компилятора.