美文网首页iOSiOS开发-swift语言iOS进阶指南
iOS开发(一)之OC过渡到Swift开发

iOS开发(一)之OC过渡到Swift开发

作者: XcqRomance | 来源:发表于2016-04-26 21:55 被阅读1193次

    “我最大的动力?”时刻挑战自己。我把生活视为用不毕业的大学,每天我求知若渴。 - 理查德 布兰森

    今天打开简书一看,发现自己写的文章都是停留在一个月前,上一个月我主要是在做公司艺学教师版的国际版本的app。这也没办法啊,项目太紧张了,累得要死,每天工作到晚上十点。一方面是时间紧张,另一方面是我想用swift重写整个项目,既可以检验下自己之前学习swift的效果,又通过项目真正提升自己swift编程能力。毕竟swift是趋势,下图是2016年4月TIOBE编程语言排行榜,足以说明学习swift的重要性,我们得紧跟着时代的的步伐。尽管工作辛苦,但是和大家分享我的学习之路,我是非常的happy的。我今天分享的主要是使用oc和swift混合编程中需要注意的细节。记录自己的学习路线,更重要的是让后学者可以少走很多坑!

    rating.png

    总之,我使用swift写程序的感觉就是,一个字:爽;两个字:很爽;三个字:非常爽。写的代码程序是非常的简洁,也非常适合一些初学者学习,入门比OC低太多了。

    注意点一:使用cocoapods管理第三方库,请添加use_frameworks!use_frameworks!use_frameworks!重要的事情说三遍

    在 Swift 项目中,cocoapod 仅支持以 Framework 方式添加框架,因此需要在 Podfile 中添加 use_frameworks!下面是我的Podfile文件,最后一个是swift的网络请求框架。

      use_frameworks!
      pod 'AFNetworking'
      pod 'SDWebImage'
      pod 'SVProgressHUD'
      pod 'MJRefresh'
      pod 'MJExtension'
      pod 'KLCPopup'
      pod 'UPYUN', '~> 1.0.0'
      pod 'HyphenateFullSDK', '~> 3.1.1'
      pod 'Alamofire', '~> 3.3.1'
    

    如果你的Podfile文件里面没有写 use_frameworks!在pod update时候将会出现下面的错误:


    error.png

    在使用的时候你得在每个swift类中import 相应的第三方库就可以使用了,这也是其麻烦之处;比如我的项目中很多页面都需要使用SVProgressHUD 显示一些信息,那么我就必须在这些类中都写这句代码引入这个库

      import SVProgressHUD
    

    按理来说,我在桥接文件中包含过一次就应该好了,但是我却一直不成功,希望解决这个问题的人,相互交流下!

    注意点二:swift调用OC代码

    建立一个桥接文件,有两种方法:

    方法一:新建一个oc的类,xcode会自动提示你建立一个桥接文件,然后将新建的oc类给删除就可以了,然后将需要在swift中调用的oc类的类名包含进来即可;

    bridgingheader.png
    Bridging-Header.png

    方法二:自己新建一个桥接头文件,File > New > File > (iOS) > Source > Header File,之后还得配置下桥接文件的路径,如下图所示,将新建的头文件路径添加进来就行了。


    bridgeHeaderPath.png

    注意点三:OC调用swift代码

    oc调用swift的类需要在.m文件中包含头文件
    #import "<#YourProjectName#>-Swift.h"
    例如我的项目名称叫YXTeacherEn,所以包含的头文件叫
    #import "YXTeacherEn-Swift.h"

    未完,待续。。。持续更新啊

    相关文章

      网友评论

      • YxYYxY:楼主麻烦请问一下解决了那个import问题了吗,新人刚刚过渡到swift,也发现了import问题,oc里可以用pch来导入头文件,swift里难不成真的每用到库的时候都要import吗?
        XcqRomance:@YxYYxY 是的,你在哪个类里面用到都需要import 那个库!
      • 灬宇灬:关注中…
      • 魅猫之:博主,请教一下,我看你pod里面用了环信的SDK“pod 'HyphenateFullSDK', '~> 3.1.1'”,请问这个在swift里面怎么import,import 后面写什么?我试过 import HyphenateFullSDK,import EMSDK,都不行,麻烦博主告诉一下,感激不尽 :sob:
        XcqRomance:@魅猫之 :+1::+1::+1:
        魅猫之:@xcq 嗯,后来琢磨出来了,只要在桥接文件里import头文件,swift文件就能访问到了;另外,swift是可以引入OC的第三方库的,用cocopod,然后可以在swift中直接import module,只是环信的sdk没有配置生成module,我研究过,其他的第三方库都有一个文件配置生成模块的,只要是有配置的,都可以在swift中 :smile: import
        XcqRomance:@魅猫之 首先环信的sdk是oc的版本,所以你要引入环信sdk的文件,只能在桥接文件中引入!swift文件中只能引入swift写的第三方库!所以你在桥接文件中引入就会成功了!:stuck_out_tongue_winking_eye:
      • 小如99:我也打算把OC像swift过渡
        XcqRomance:@小小如 今年WWDC大会之后发布出wift3 的版本改动可能有回有点大!
      • 一铭_:cocopod里面如果同时存在oc swift 库 加了use_framework貌似会出现你遇到的问题
        XcqRomance:@蔡小姐石先生 我遇到问题是,需要在每个用到的类中import 相应的oc第三方库,而按常理来说应该在桥接文件中impor 之后,而不需要在每个类中import !
        一铭_:@xcq 加了use_framwork会导致oc库无法桥接?
        XcqRomance:@蔡小姐石先生 不会吧,如果同时存在oc和swift库不添加use_framework才会报错,添加swift库就必须添加这句,否则pod update 会出现我说的错误:smile:
      • 斯道名城:持续关注,感谢分享

      本文标题:iOS开发(一)之OC过渡到Swift开发

      本文链接:https://www.haomeiwen.com/subject/svwqrttx.html