0

由于迁移到 Xcode 6 Beta 6 尝试在 Swift 代码中使用 MPMoviePlayerPlaybackDidFinishNotification 会导致链接器错误:

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 将导致链接器错误消失。该应用程序与 MediaPlayer.framework 链接。

这似乎只是将 MPMoviePlayerPlaybackDidFinishNotification 与 addObserver 结合使用的问题,例如将其分配给变量或打印它不会导致链接器错误。

代码有什么问题还是 XCode/swift 有问题?

4

2 回答 2

1

升级到 xcode 6 beta 6 后出现同样奇怪的错误。对我来说,问题已通过Product -> Clean. 如果这不能解决错误按住option并单击菜单栏中的,Product那么您将在下拉菜单中看到Clean Build Folder单击该按钮。

或者你可以从 appstore下载Watchdog应用程序。这个小助手会自动清理你的 xcode 项目。如此处所述Xcode 6 Beta / Swift - Playground 未更新

于 2014-08-24T17:43:11.583 回答
0

要在迁移到 XCode 6 Beta 6 时解决这些链接器错误,请删除派生文件夹的内容,如下所示:Swift beta 6 - Confusing linker error message

于 2014-08-23T05:58:04.497 回答