Swift 3 在 Objective C 的扩展中使用 class 时出现链接器问题

Swift 3 Linker issue when using a class in an extension for Objective C

我正在尝试将 Swift 代码用于我的 Objective-C。在我更新到 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

这显然只是一个简单的例子。我所有的代码都是 "extension" 格式。有没有办法通过删除扩展来解决这个链接器问题,而无需重写整个代码?

不幸的是,在这个问题上搜索了很多之后,结果是 Swift 3 错误。

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