【问题标题】:Swift 3 Linker issue when using a class in an extension for Objective C在 Objective C 的扩展中使用类时的 Swift 3 链接器问题
【发布时间】:2016-10-19 00:04:14
【问题描述】:

我正在尝试在我的 Objective-C 中使用 Swift 代码。在我更新到 Swift3、XCode 8 之前,一切正常。

使用以下 Swift 类:

@objc (TRIABC1)
public class ABC : NSObject {

}

public class DTO: NSObject {
}

extension DTO {
    @objc (TRIABC2)
    public class ABC2 : NSObject {

    }
}

然后在我的 Objective-C 中:

#import "MyApp-Swift.h"

- (void)abc {
    TRIABC1 *a = [[TRIABC1 alloc] init];
    TRIABC2 *b = [[TRIABC2 alloc] init];
}

TRIABC2 中的代码将在链接器阶段失败,并出现以下错误:

Undefined symbols for architecture x86_64:
  "_OBJC_CLASS_$_TRIABC2", referenced from:
      objc-class-ref in TRMyFile.o

这显然只是一个简单的例子。我所有的代码都是“扩展”格式。有没有办法在不重写整个代码的情况下通过删除扩展来解决这个链接器问题?

【问题讨论】:

    标签: xcode linker swift3 linker-errors


    【解决方案1】:

    不幸的是,在这个问题上搜索了很多之后,它原来是一个 Swift 3 的错误。

    https://bugs.swift.org/browse/SR-2267

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-02
      • 1970-01-01
      • 2017-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-04
      • 1970-01-01
      相关资源
      最近更新 更多