zoukankan      html  css  js  c++  java
  • 关于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...
  • 相关阅读:
    TypeError: Object of type 'type' is not JSON serializable解决方法
    Python Logging
    Mysql 主从赋值
    (转)Mysql 创建用户 查看权限 授权
    mysql you need (at least one of) the SYSTEM_USER privilege(s) for this operation
    java 多线程 六、线程状态
    java 多线程 五、线程组
    java 多线程 四、线程通信
    java Runtime类 Time类
    java 设计模式 ---- 饿汉 , 懒汉
  • 原文地址:https://www.cnblogs.com/Shreker/p/4942794.html
Copyright © 2011-2022 走看看