博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
swift中的新特性
阅读量:6611 次
发布时间:2019-06-24

本文共 1706 字,大约阅读时间需要 5 分钟。

hot3.png

1.swift4可以通过default从字典中取一个非空的值(数组没有类似的属性)

let value = starWordsCount[starName, default: 0]   //从字典中取值并赋默认值

2.可以使用如下的方式定义一个多行的字符串, 字符串中包含换行符号, 但是不包含每行开始的空格.

let str = """    abcdefg    highlmn    """print(str)

3.swift4中, extension中可以访问private属性. extension中不能重写父类的方法, 写在extension中的方法不能被子类重写.

4.Codable协议

在Objective-C中值类型的相互影响是十分糟糕的。比如NSCoding协议,类继承它之后,我们需要在类中重写自定义的 encoding 和 decoding方法。这样显得十分痛苦而且很容易出错。

在swift4.0 中,引入了新的Codable协议,可以让你在不添加其他特殊代码的情况下序列化和反序列化自定义的数据类型,从而不用担心值类型的丢失。更漂亮的是,你可以选择数据被序列化为什么样的格式:plist(XML)或者JSON。

是的,Swift 4 可以让你在不添加任何特殊代码的情况下将自定义数据类型序列化为JSON。

struct Language:Codable {    var name: String    var version: Int}let swift = Language(name:"Swift",version:4)let encoder = JSONEncoder()let encoded = try? encoder.encode(swift){    //...}

5.String又变成了集合类型

就是说, 可以做字符串倒置, 获取每个字符, map(), flatMap()等高阶函数.

6.在Swift4中一个对象的属性可以遵守多个协议,用&组合

var delegate: Protocol1 & Protocol2

7.Associated Type可以追加Where约束语句

associatedtype Element where 
//swift4标准库代码如下, 它限定了 Sequence 中 Element 这个类型必须和 Iterator.Element 的类型一致。protocol Sequence { associatedtype Element where Self.Element == Self.Iterator.Element // ...}

8.Unicode 字符串在计算 count 时的正确性改善

9.更快的字符处理速度

Swift 4 的字符串优化了底层实现,对于英语、法语、德语、西班牙语的处理速度提高了 3.5 倍。 对于简体中文、日语的处理速度提高了 2.5 倍。

10.移除未调用的协议实现

如果某个类实现了某个协议, 怎如果编译器编译时候发现没有任何地方调动协议相关的方法, 则编译器会移除掉协议实现相关内容, 来达到见笑包大小的目的.

11.减少隐式@objc自动推断

在项目中想把swift写的api暴露给oc调用, 需要增加@objc, 在swift中, 编译器会在很多地方为我们隐式的加上, 例如当一个类继承自NSObject, 那么这个类所有方法都会被隐式的加上@objc.

这样很多并不需要暴露给objc的代码也被加上了@objc. 大量@objc会导致二进制问价大小的增加.

在swift4中, 隐式@objc自动推断只会发生在很少的必须使用@objc的情况下, 比如: 重写父类objc协议; 遵守一个objc协议. 其它大多数地方必须手工的显示的加上@objc. 减少了隐式@objc自动推断后, Apple Music app的包大小减少了5.7%.

转载于:https://my.oschina.net/whforever/blog/1612298

你可能感兴趣的文章
CentOS中zip压缩和unzip解压缩命令详解
查看>>
server 2008 r2 hyper-v 硬盘扩容
查看>>
Android之DOM解析XML
查看>>
关于字符串输入的问题
查看>>
NSD基础交换-子网划分
查看>>
rsync的配置部署
查看>>
Java的新项目学成在线笔记-day11(二)
查看>>
思科 DHCP服务器配置及DHCP中继
查看>>
以太坊DAO之时间锁定Multisig
查看>>
这样的APP你还不满意吗?不满意算我输
查看>>
百度城市大会绽放蓉城,弘和受邀“智”创未来
查看>>
深入理解QtCreator的插件设计架构
查看>>
JVM源码分析之Object.wait/notify实现
查看>>
网卡调试
查看>>
零基础web前端学习路线
查看>>
静态路由
查看>>
根据供词确定谁是凶手
查看>>
mongrel
查看>>
一元逆变器概述
查看>>
每2秒获取系统的赋值及内存使用率
查看>>