【发布时间】: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