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

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

今天打开简书一看,发现自己写的文章都是停留在一个月前,上一个月我主要是在做公司艺学教师版的国际版本的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"

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,262评论 4 61
  • 很多人讲,海明威塑造了一个永不言败的硬汉,但我更爱他那些雕琢老人脆弱柔软部分的笔墨。 在日日夜夜的漂流中,老人无数...
    妙齡獸阅读 1,348评论 0 0
  • 在读书吧,收获的是《羊皮卷》中智者的传世思想精华,是一种惊人警醒的巨大力量。收获的是对自我的清醒认识:独一无二...
    后来居上冯建伟阅读 514评论 0 0
  • -1- 睡前,我们一起读了一首诗。 读完,你躺好。 我说,你多幸福,有妈妈陪,有的宝宝是没有妈妈的。 你很机灵,立...
    简爱924阅读 286评论 0 2