Swift 实践:从 OC 到 Swift

Posted iOS程序员

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Swift 实践:从 OC 到 Swift相关的知识,希望对你有一定的参考价值。

本文是笔者在第一次完整用 Swift 开发项目过程中的一些实践笔记。如果你是跟我一样,之前完全没有使用 Swift 开发项目的经验,那么本文应该会有一些帮助,内容方面会涉及一些基础概念,还有一些实例代码。

 类型对比 


Swift OC
String
NSString / NSMutableString
Array NSArray / NSMutableArray
Dictionary
NSDictionary / NSMutableDictionary
Set NSSet / NSMutableSet


Swift 里没有可变or不可变的集合类型这一说的,你可以使用 var 来定义变量或者 let 定义常量来决定一个集合类型是不是可变。




 UIButton 添加响应事件 


在方法前加上 @objc 修饰

backBtn.addTarget(self, action: #selector(backAction), for: .touchUpInside)
@objc func backAction () {  self.navigationController?.popViewController(animated: true)}


 全局导入三方库头文件 

// 使用 @_exported 修饰@_exported import SnapKit


 全局常量,类似宏 

// 创建一个 Global.swiftlet PixelOne: CGFloat = 0.5


 Swift 中的值类型、引用类型


值类型:一种当它被指定到常量或者变量,或者被传递给函数时会被拷贝的类型。

  • 结构体和枚举是值类型

  • Swift 中所有的基本类型:整数、浮点数、布尔、字符串、数组、字典都是值类型,并且以结构体的形式在后台实现


引用类型:当它被指定到常量或变量或被传递给函数时,不会被拷贝,而是对现存实例的引用。

  • 类是引用类型

  • 函数和闭包是引用类型



 类 vs 结构体 


类是引用类型,结构体是值类型。当符合以下一个或几个条件的时候,应当考虑使用结构体。


  • 结构体的主要目的是封装一些相关的简单数据值

  • 需要封装的数据想要拷贝而不是引用

  • 任何存储在结构体中的属性是值类型,也将被拷贝而非引用

  • 结构体不需要从一个已存在类型继承属性或者行为


系统会给结构体生成一个默认初始化方法,来保证所有存储属性都有初始值。类需要开发者自己写初始化方法。


Swift 中,创建类的实例对象,要向对空间申请内存。



 混编 Swift 和 OC 


Swift 调用 OC:创建桥文件,把 OC 要暴露给 Swift 的内容在桥文件中导入。桥文件格式为  {targetName}-Bridging-Header.h 


OC 调用 Swift:Xcode 已经默认生成一个用于 OC 调用 Swift 的头文件,文件名格式是  {targetName}-Swift.h  


以上是关于Swift 实践:从 OC 到 Swift的主要内容,如果未能解决你的问题,请参考以下文章

OC与Swift混编

OC与Swift混编

OC与Swift混编

Swift系列三十 - 从OC到Swift

Swift系列二十九 - 从OC到Swift

开始从oc转入swift的注意点