Swift4.0复习特性、编译标志和检查API的可用性
1.Swift中的特性:
@引出,后面紧跟特性名,圆括号带参数即可。
@attribute(args)
avaiable:
指明对象,函数,类型的可用性。
@available(iOS 10.0, macOS 10.10, *)
discardableResult:
用于修饰带有返回值的函数或方法,以指明当前函数或方法的返回值可被缺省。
@discardableResult
func foo(a: Int) -> Int {
return a +
}
func foo(_: Void) -> Int {
return
}
// 我们这里对foo(_:)函数进行调用,
// 此时必须使用通配符来接受foo(_:)的返回值,
// 否则会引发编译警告:
// “foo()的返回值未被使用”
_ = foo()
// 这里对foo(a:)的调用不需要用通配符来接受,
// 因为它已经用 @discardableResult 特性进行了修饰,
// 表明其返回值可直接被丢弃
foo(a: )
objc:
“在Swift 3.1版本之后,所有需要作为一个selector的实例方法都需要用 @objc 特性进行修饰。如果我们想像Objective-C那样定义一个协议,使得它里面的属性与方法不需要都可实现,那么我们可以用 @objc 特性来修饰该协议。”
摘录来自: “大话Swift 4.0”。 iBooks.
/// 这里使用了@objc特性来修饰MyProt协议
@objc
protocol MyProt {
/// 这里method方法必须实现
func method()
/// 这里的foo方法不是必须实现,
/// 而是可选实现
@objc
optional func foo()
}
autoclosure:
“可以让一个表达式自动封装为一个不带参数的闭包”
摘录来自: “大话Swift 4.0”。 iBooks.
convention:
“此特性用于修饰一个函数对象的类型,以指定其调用约定。”
摘录来自: “大话Swift 4.0”。 iBooks.
escaping:
“该特性用于修饰一个函数或方法的形参类型,指明该形参将会在稍后执行,因而要被存放一下。这意味着该形参的生命周期将延伸到此函数或方法调用结束之后也不会消失。”
摘录来自: “大话Swift 4.0”。 iBooks.
inline:
“inline特性暗示该函数或方法可以被內联或不被內联。它有一个参数用于指明所修饰的函数或方法是否可被內联:__always 表示总是被內联;never 表示该函数无论什么时候都不应该被內联。”
摘录来自: “大话Swift 4.0”。 iBooks.
/// 定义一个从不内联的函数noinlineFunc
@inline(never)
func noinlineFunc() {
print("Never inlined!")
}
/// 定义一个总是被内联的函数alwaysinlineFunc
@inline(__always)
func alwaysinlineFunc() {
print("always inlined!")
}
_silgen_name:
“_silgen_name特性可用于指明当前所引用的函数是一个遵循C语言标准ABI的函数。”
摘录来自: “大话Swift 4.0”。 iBooks.
2.编译标志:
@inline(__always)
func debug_log(str: String) {
#if DEBUG
print(str)
#endif
}
debug_log(str: "Hello, world!!")
3.检查API的可用性:
if #available(iOS , *) {
}
到这里Swift4.0基础又学习复习完了一遍,每次学习都有一些不一样的收获,希望自己Swift语言越来越熟练~~~加油
Swift4.0复习特性、编译标志和检查API的可用性的更多相关文章
- 返璞归真 asp.net mvc (11) - asp.net mvc 4.0 新特性之自宿主 Web API, 在 WebForm 中提供 Web API, 通过 Web API 上传文件, .net 4.5 带来的更方便的异步操作
原文:返璞归真 asp.net mvc (11) - asp.net mvc 4.0 新特性之自宿主 Web API, 在 WebForm 中提供 Web API, 通过 Web API 上传文件, ...
- 在Swift中检查API的可用性
http://www.cocoachina.com/swift/20150901/13283.html 本文由CocoaChina译者ALEX吴浩文翻译自Use Your Loaf博客 原文:Chec ...
- Swift4.0复习类型定义、类型投射等操作
1.类型定义: /// 这里将MyInt定义为Int32类型 typealias MyInt = Int32 /// 这里将MyArrayInt定义为[MyInt]数组类型 typealias M ...
- Swift4.0复习类
1.类的属性: 2.类的方法: 3.类作为引用类型: “Swift新增了一对操作符 === 与 !== 用于判定同一个类的两个对象引用是否指向同一对象实例.” 摘录来自: “大话Swift 4.0”. ...
- Swift4.0复习协议
1.协议的定义: /// 定义一个协议MyProt protocol MyProt { /// 声明了一个实例方法foo, /// 其类型为:() -> Void func foo() ...
- Swift4.0复习闭包
1.闭包的定义和调用: _ = { (param1: Int, param2: Float, param3: Void) -> return_type in // 闭包执行代码 /* ... * ...
- Swift4.0复习访问控制与作用域
1.访问等级: open: 可以继承,可以重写. public: “public 访问等级能用于修饰所有文件作用域的函数.对象.协议.枚举.结构体.类以及各种类型中的属性与方法.用 public 所修 ...
- Swift4.0复习错误处理
1.Swift中错误的表示: “在Swift中如果我们要定义一个表示错误的类型非常简单,只需遵循 Error 协议即可.我们通常用枚举或结构体类型来表示错误类型,当然枚举可能用得更多些,因为它能更直观 ...
- Swift4.0复习扩展
1.扩展计算式属性: 2.对方法进行扩展: /// 定义枚举类型Light, /// 它指定了基本类型String enum Light: String { case red = "red& ...
随机推荐
- python - django (ORM使用步骤)
print('asd') """ # 1. 手动创建一个数据库 # 2. 在 Django 项目中设置连接数据库的相关配置(告诉Django 连接哪一个数据库) 在 DA ...
- 什么是 socket?简述基于 tcp 协议的套接字通信流程?
Socket的英文原义是"孔"或"插座".通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄, 可以用来实现不同虚拟机或不同计 ...
- C 语言程序设计
C 语言数据类型: 整数: char(也是字符型) short int long 浮点型: float double 指针 自定义类型 输入输出格式化: int ->%d long ->% ...
- linux服务器初始化(防火墙、内核优化、时间同步、打开文件数)
#!/bin/bash read -p 'enter the network segment for visiting the server:' ips # 关闭firewalld和selinux s ...
- SIGAI机器学习第二十一集 AdaBoost算法2
讲授Boosting算法的原理,AdaBoost算法的基本概念,训练算法,与随机森林的比较,训练误差分析,广义加法模型,指数损失函数,训练算法的推导,弱分类器的选择,样本权重削减,实际应用. 大纲: ...
- BurpSuite安装、使用
本周学习内容: 1.学习<网络是怎么连接的>和JavaScript: 2.学习MySQL和Linux: 3.熟悉burpsuite: 4.使用wireshark观察数据包: 5.XAMPP ...
- Codevs 2185【模板】最长公共上升子序列
题目描述 Description 熊大妈的奶牛在小沐沐的熏陶下开始研究信息题目.小沐沐先让奶牛研究了最长上升子序列,再让他们研究了最长公共子序列,现在又让他们要研究最长公共上升子序列了.小沐沐说,对于 ...
- 微信小程序--安装教程
首先 奉上腾讯官方文档 方便参考:https://mp.weixin.qq.com/debug/wxadoc/design/index.html 个人认为没说啥特别有用的信息(可能是我看的太粗糙了) ...
- 转载 | Python AI 教学│k-means聚类算法及应用
关注我们的公众号哦!获取更多精彩哦! 1.问题导入 假如有这样一种情况,在一天你想去某个城市旅游,这个城市里你想去的有70个地方,现在你只有每一个地方的地址,这个地址列表很长,有70个位置.事先肯定要 ...
- 43、内置函数及每日uv、销售额统计案例
一.spark1.5内置函数 在Spark 1.5.x版本,增加了一系列内置函数到DataFrame API中,并且实现了code-generation的优化.与普通的函数不同,DataFrame的函 ...