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

`po` дает` error: <EXPR>: 1:1: ошибка: использование неразрешенного идентификатора`

У меня есть эта проблема с po в консоли, где попытка вывода функции работает сама по себе, но вывод переменной или константы не выполняется.

first result is for <code>po bar.boy()</code>, second says <code>unresolved</code>

Как вы можете видеть здесь, хотя вы думаете, что var/let содержит содержимое bar.boy(), Swift как-то не может его найти...

4b9b3361

Ответ 1

Итак, оказалось, что в прошлом, вероятно, была ошибка: когда вы добавляли файл Swift, он добавлял/спрашивал заголовок Bridging, но не добавлял бы эту строку в ваш проект

SWIFT_OPTIMIZATION_LEVEL = "-Onone";

что означает, что вы останетесь в этом состоянии

SWIFT_OPTIMIZATION_LEVEL fastest

приводит к error: <EXPR>:1:1: error: use of unresolved identifier!

Я мог только найти это, потому что я перемещал файлы в своем проекте, и когда я добавил файлы ObjC в проект, он спросил меня о заголовке Bridging (хотя у меня его уже было!) и к счастью добавил, что SWIFT_OPTIMIZATION_LEVEL. Можно было бы подумать, что это ошибка, чтобы рассмотреть значение по умолчанию fastest, но опять же я предполагаю, что это было только ошибкой в ​​прошлом и теперь исправлено.

Тем не менее, я исправил, что это может быть ошибка, наоборот, если она добавляет none в сборку релиза. Я не могу проверить это прямо сейчас, потому что для тестирования я имел только конструкцию Debug. Я оставлю это как упражнение:) для Apple Engineers.

Ответ 2

Я установил Swift Complier на "-O"

SWIFT_OPTIMIZATION_LEVEL = "-O";

и верните его в "-Onone".

SWIFT_OPTIMIZATION_LEVEL = "-Onone";

Затем он работает.

Ответ 3

Я уверен, что ошибка связана с тем, что во время компиляции был оптимизирован foo, и этот символ больше не существует в скомпилированном коде (даже если он не должен иметь отладки и все еще ошибка LLDB)

Вероятно, если вы добавите некоторое использование foo в следующие строки (даже println), его символ, мы надеемся, будет сохранен в IR, и вы сможете po foo

(Я согласен, что это все еще ошибка, но, по крайней мере, если она работает, у вас будет обходное решение и некоторое объяснение)

Ответ 4

Исправлено после настройки:

Optimization Level = None[-Onone] в Компилятор Swift - Генерация кода

Обратите внимание, что установка Optimization Level под Apple LLVM 8.0 - Генерация кода не имеет эффекта

Ответ 5

Если ваш проект использует Swift, в настройке проекта/цели есть два отдельных параметра "Уровень оптимизации". Это не только "SWIFT_OPTIMIZATION_LEVEL". Проверьте эту ссылку: fooobar.com/info/41037/...

Я оставлю его здесь, если он кому-то поможет.