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