2016-08-16 2 views
2

Так что я просто возвращаюсь к программированию для macOS после нескольких лет перерыва и обнаружил синтаксис @import. Я создал образец программы, чтобы проверить его, но он не работает, поскольку мой googling, кажется, предполагает, что он должен.Xcode 8 Beta @import неожиданное поведение

Тестовое проекта:

  1. Открыть Xcode
  2. File> New> Project ...
  3. Выберите шаблон Cocoa Application для MacOS. Нажмите «Далее»
  4. Назовите проект «ModuleTest», добавьте название организации и ее идентификатор. Выберите Objective-C в качестве языка, установите флажок Use Storyboards, убедитесь, что «Создать приложение на основе документов», «Использовать основные данные», «Включить тесты модулей» и «Включить тесты пользовательского интерфейса», не установлены. Нажмите «Далее» и выберите место сохранения. Не создавайте репозиторий Git и не добавляйте ни к одному проекту или рабочему пространству. Нажмите «Создать».
  5. В навигаторе нажмите на Main.storyboard.
  6. В библиотеке объектов перетащите объект AVKit Player View на представление View Controller Scene в раскадровке.

Теперь на этом этапе мы видим симптом, который заключается в том, что если вы создадите проект, откроется окно, но проигрыватель отсутствует в нем, а в окне вывода xcode появится сообщение, такое как

2016-08-16 09: 07: 46,465 ModuleTest [19778: 4097187] не удалось установить (contentViewController) определенные пользователем досматриваемого свойства на (NSWindow): *** - [NSKeyedUnarchiver decodeObjectForKey]: не может декодировать объект класса (AVPlayerView) для ключа (NSDestination); класс может быть определен в исходном коде или библиотека, которая не связана

Эта ошибка возникает независимо от того, поставил ли я в @import AVKit; заявление в AppDelegate.h, AppDelegate.m, ViewController.h, ViewController.m, или main.m. Однако простое связывание AVKit.framework в разделе «Связывание двоичных файлов с библиотеками» на этапах сборки проекта решает проблему, а @import не требуется нигде.

Так что же происходит? Я думал, что @import должен был устранить необходимость ручного соединения фреймворков? Я неправильно обрабатываю этот процесс? Это происходит, потому что я использую раскадровки? Есть идеи?

ответ

1

Проблема в том, что нет фактического кода, который ссылается на AVPlayerView. Попробуйте добавить одну строку кода, которая использует AVPlayerView, и вы заметите, что ошибка исчезла.

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