//CoolSwiftClass.swift
@objc(MyCoolSwiftClass)
class CoolSwiftClass: NSObject {}
//MyObjCViewController.h
@class MyCoolSwiftClass;
@interface MyObjCViewController : UIViewController
- (instancetype)initWithMyCoolSwiftClass:(MyCoolSwiftClass *)myCoolSwiftClassInstance;
@end
//SadSwiftClass.swift
class SadSwiftClass: UIViewController {
override func loadView() {
super.loadView()
//This won't work
let myObjCViewController = MyObjCViewController(coolSwiftClass: coolSwiftClassInstance)
}
}
似乎Swift可以找到前向声明MyCoolSwiftClass
,但它无法发现它实际上是CoolSwiftClass
。
我在Swift and Objective-C in the Same Project找不到任何可以帮助我的东西。
更新于2015-11-19 13:34 CST
只需将回购上传到GitHub:SO33775908
更新于2015-11-19 13:47 CST
找出解决方法:
没有特殊的ObjC名称。结帐分支No special ObjC name
更新于2015-11-19 14:47 CST
产生警告的另一种解决方法:
答案 0 :(得分:0)
我找到的最佳方法是解决方法1:
没有特殊的ObjC名称
如果您暂时使用了特殊的ObjC名称,可以使用以下内容:
//ClassName_Alias.h
#define MyCoolSwiftClass CoolSwiftClass
//CoolSwiftClass.swift
@objc
class CoolSwiftClass: NSObject {}
请查看样本仓库的问题更新1。