Неопределенные символы для архитектуры arm64 с использованием MPMoviePlayerPlaybackDidFinishNotification с Xcode Beta 6
После перехода на Xcode 6 Beta 6, попытка использовать MPMoviePlayerPlaybackDidFinishNotification в коде Swift приводит к ошибке компоновщика:
Undefined symbols for architecture arm64:
"__TFSs26_forceBridgeFromObjectiveCU__FTPSs9AnyObject_MQ__Q_",
Вот соответствующий фрагмент кода.
import MediaPlayer
class ViewControllerController : NSObject, MFMessageComposeViewControllerDelegate, MFMailComposeViewControllerDelegate {
func thisWontLink () -> Void {
NSNotificationCenter.defaultCenter().addObserver(self, selector: "nothing:", name: MPMoviePlayerPlaybackDidFinishNotification, object: nil);
}
func nothing() -> Void {
}
Замена MPMoviePlayerPlaybackDidFinishNotification на "Some Random string" приведет к исчезновению ошибки компоновщика. Приложение связано с MediaPlayer.framework.
Кажется, это проблема только при использовании MPMoviePlayerPlaybackDidFinishNotification в сочетании с addObserver, например, назначение его для переменной или printlning не приводит к ошибке компоновщика.
Что-то не так с кодом или это проблема с XCode/swift?
2 ответа
Были такие же странные ошибки после обновления до xcode 6 beta 6. Для меня проблема была исправлена с Product -> Clean
, И если это не исправляет ошибки, удерживайте опцию и нажмите на Product
в Menubar, то вы увидите в выпадающем меню Clean Build Folder
нажмите на это.
Или вы можете скачать приложение Watchdog из магазина приложений. Этот маленький помощник автоматически очищает ваши проекты xcode. Как уже упоминалось, Xcode 6 Beta / Swift - игровая площадка не обновляется
Чтобы устранить эти ошибки компоновщика при переходе на XCode 6 Beta 6, удалите содержимое производной папки, ответив здесь: Swift beta 6 - Сообщение об ошибке запутанного компоновщика