关于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, 我们先测试一下:

  1. 新建一个亲们都熟悉的Objective-C项目,Called:MixtureOfOCAndSwit;
  2. 新建类Person,但是这个Person类必须继承自NSObject或其子类,否则会出现错误`use of undeclared identifier 'Person'`:
    import Foundation
    
    class Person: NSObject {
        var name: String?
        
        var age: UInt?
    }
    但是在新建时,Xcode会要求亲们创建一个桥接文件,这个桥接文件会在Swift项目导入OC代码的时候会配置,这里不用理会
  3. 然后在新项目的ViewController里面import,怎么去import呢? Swift中又没有所谓的头文件! 其实是有的, Xcode回根据你的Swift代码自动生成一个头文件,那么头文件叫什么名字呢?

    由于我们这里是混编,所以这个自动生成的头文件的名字是动态变化的但是有一个规则:`xxx-swift.h`, 当中的xxx就是你当前的项目名称,这里,当然了就是`MixtureOfOCAndSwit-swift.h`,你在你的ViewController中可以这样引入:

    #import "MixtureOfOCAndSwit-swift.h"
  4. 这时候你可以把你的Swift代码引入了:
    - (void)viewDidLoad {
        [super viewDidLoad];
        
        Person *person = [[Person alloc] init];
        
    }

    但是还是报错,为什么呢?这是因为我觉得我还在绕圈子,还么说完呢

  5. Target->Build Settings->Packaging->Define Module 设置成YES, THEN, BUILD IT, YOU HAVE GOT WHAT TO DO...