我有这个快速的代码:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool {
...
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let controller = storyboard.instantiateInitialViewController()!
if (controller is InlineMainViewController ){
mainViewController = controller as! InlineMainViewController
}
window?.rootViewController = controller
window?.makeKeyAndVisible()
}
当我的viewController具有以下属性时:
@objc(ViewController) // match the ObjC symbol name inside Storyboard
public class InlineMainViewController: UIViewController,
(controller is InlineMainViewController )
返回false
当它没有这个属性时:
public class InlineMainViewController: UIViewController,
(controller is InlineMainViewController )
返回true
我的Main.sotryboard
已与InlineMainViewController
我从Google analytics github示例中获取了@objc(ViewController)
答案 0 :(得分:0)
如果您的Swift类没有继承,您可以使用
@objc
属性 来自Objective-C类,或者如果要更改a的名称 接口中的符号,因为它暴露在Objective-C代码中。
此代码:
@objc(ViewController)
如Importing Swift into Objective-C
中所述,当通过生成的头导入到Objective-C代码中时,将导致该属性后面的类在括号中具有名称。将Swift代码从同一目标导入Objective-C
将该目标的Swift代码导入任何Objective-C .m文件 在该目标内使用此语法并替换相应的 名:
#import "ProductModuleName-Swift.h"