我还在学习如何将Swift代码集成到用Objective C编写的代码中。如果我将Swift文件和类命名为任何Objective-C类已经采用的名称,那就说了。例如,
我会创建:" ViewController.swift",并具有以下内容:
import Foundation
import UIKit
@objc class ViewController:UIViewController {
func swiftMethod() {
print("It works.")
}
}
已经有#34; ViewController.h"和" ViewController.m"。后来我会尝试在Objective-C中调用Swift类:
#import <myproject-Swift.h>
...
ViewController *vc = [ViewController new];
[vc swiftMethod];
...
编译器如何知道我启动了哪个类:来自Swift的类还是来自Objective-C的类?
答案 0 :(得分:6)
在Obj-C运行时,这两个类实际上有不同的名称。 Swift类名为YourProject.ViewController
,而Obj-C类名称为ViewController
。
从Obj-C代码中,您获得的类将取决于您导入的标头。
如果导入两个标题,则表示编译错误。
如果强制两个类具有相同的名称,请使用:
@objc(ViewController) class ViewController: UIViewController {
}
然后是链接器错误。