关于Objective-C和Swift混编
最近迷恋Stanford的iOS公开课,虽然英语不怎么样,后面的还没有翻译,我还是硬着头皮看了好几遍,终于是看完了,只想说一句词:AMAZING!!!
好了,说正事,现在做的项目都是以前做的Objective-C老项目,难道直到Objective-C被彻底的淘汰了我才能真正的去体验Swift吗?
NO,NO,NO!!! I DO NOT WANT TO DELAY, I WANT IT NOW! CONGRATULATIONS! YOU CAN DO IT:
其实iOS现在是可以混编的,接下来讲一下如何在以前的老项目中加入Swift, 我们先测试一下:
- 新建一个亲们都熟悉的Objective-C项目,Called:MixtureOfOCAndSwit;
- 新建类Person,但是这个Person类必须继承自NSObject或其子类,否则会出现错误`use of undeclared identifier 'Person'`:
import Foundation class Person: NSObject { var name: String? var age: UInt? }
-
然后在新项目的ViewController里面import,怎么去import呢? Swift中又没有所谓的头文件! 其实是有的, Xcode回根据你的Swift代码自动生成一个头文件,那么头文件叫什么名字呢?
由于我们这里是混编,所以这个自动生成的头文件的名字是动态变化的但是有一个规则:`xxx-swift.h`, 当中的xxx就是你当前的项目名称,这里,当然了就是`MixtureOfOCAndSwit-swift.h`,你在你的ViewController中可以这样引入:#import "MixtureOfOCAndSwit-swift.h"
- 这时候你可以把你的Swift代码引入了:
- (void)viewDidLoad { [super viewDidLoad]; Person *person = [[Person alloc] init]; }
但是还是报错,为什么呢?这是因为我觉得我还在绕圈子,还么说完呢
- Target->Build Settings->Packaging->Define Module 设置成YES, THEN, BUILD IT, YOU HAVE GOT WHAT TO DO...
CHANGE MYSELF BEFORE I CHANGE THE WORLD.