iOS错误:在Swift中链接时找不到符号

时间:2017-05-25 08:29:30

标签: ios iphone swift linker-errors

我在A.swift文件中的Swift中有以下代码:

/// **A.swift**

protocol Johnkui: class {
    var name: TruncatedView? { get  set }
}

/// typealias TruncatedView = String
class TruncatedView: UIView {

}

extension UIView {

    private struct TruncatedViewKey {
        static var navigationViewKey = "navigationViewKey"
    }

    var name: TruncatedView? {
        set {
            objc_setAssociatedObject(self, &TruncatedViewKey.navigationViewKey, newValue, objc_AssociationPolicy.OBJC_ASSOCIATION_ASSIGN)
        }
        get {
            return objc_getAssociatedObject(self, &TruncatedViewKey.navigationViewKey) as? TruncatedView
        }
    }
}

和B.swift文件有以下代码:

/// B.swift
class JJ: UIView, Johnkui {

}

编译这两个文件时,报告了一个链接错误:

Undefined symbols for architecture x86_64:
  "__TFE9SwiftTestCSo6UIViewm4nameGSqCS_13TruncatedView_", referenced from:
      __TTWC9SwiftTest2JJS_7JohnkuiS_FS1_m4nameGSqCS_13TruncatedView_ in ViewController.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

然而,当将这两个文件合并为一个时,错误就消失了,我无法找到这个结果的原因,你的解释是什么?

0 个答案:

没有答案