Swift4.0复习特性、编译标志和检查API的可用性
1.Swift中的特性:
@引出,后面緊跟特性名,圓括號帶參數(shù)即可。
@attribute(args)
avaiable:
指明對象,函數(shù),類型的可用性。
@available(iOS 10.0, macOS 10.10, *)discardableResult:
用于修飾帶有返回值的函數(shù)或方法,以指明當前函數(shù)或方法的返回值可被缺省。
@discardableResult func foo(a: Int) -> Int {return a + 1 }func foo(_: Void) -> Int {return 10 }// 我們這里對foo(_:)函數(shù)進行調(diào)用, // 此時必須使用通配符來接受foo(_:)的返回值, // 否則會引發(fā)編譯警告: // “foo()的返回值未被使用” _ = foo()// 這里對foo(a:)的調(diào)用不需要用通配符來接受, // 因為它已經(jīng)用 @discardableResult 特性進行了修飾, // 表明其返回值可直接被丟棄 foo(a: 10)objc:
“在Swift 3.1版本之后,所有需要作為一個selector的實例方法都需要用 @objc 特性進行修飾。如果我們想像Objective-C那樣定義一個協(xié)議,使得它里面的屬性與方法不需要都可實現(xiàn),那么我們可以用 @objc 特性來修飾該協(xié)議。”
摘錄來自: “大話Swift 4.0”。 iBooks.
/// 這里使用了@objc特性來修飾MyProt協(xié)議 @objc protocol MyProt {/// 這里method方法必須實現(xiàn) func method()/// 這里的foo方法不是必須實現(xiàn),/// 而是可選實現(xiàn) @objcoptional func foo() }autoclosure:
“可以讓一個表達式自動封裝為一個不帶參數(shù)的閉包”
摘錄來自: “大話Swift 4.0”。 iBooks.
convention:
“此特性用于修飾一個函數(shù)對象的類型,以指定其調(diào)用約定。”
摘錄來自: “大話Swift 4.0”。 iBooks.
escaping:
“該特性用于修飾一個函數(shù)或方法的形參類型,指明該形參將會在稍后執(zhí)行,因而要被存放一下。這意味著該形參的生命周期將延伸到此函數(shù)或方法調(diào)用結(jié)束之后也不會消失。”
摘錄來自: “大話Swift 4.0”。 iBooks.
inline:
“inline特性暗示該函數(shù)或方法可以被內(nèi)聯(lián)或不被內(nèi)聯(lián)。它有一個參數(shù)用于指明所修飾的函數(shù)或方法是否可被內(nèi)聯(lián):__always 表示總是被內(nèi)聯(lián);never 表示該函數(shù)無論什么時候都不應(yīng)該被內(nèi)聯(lián)?!?/p>
摘錄來自: “大話Swift 4.0”。 iBooks.
/// 定義一個從不內(nèi)聯(lián)的函數(shù)noinlineFunc @inline(never) func noinlineFunc() {print("Never inlined!") }/// 定義一個總是被內(nèi)聯(lián)的函數(shù)alwaysinlineFunc @inline(__always) func alwaysinlineFunc() {print("always inlined!") }_silgen_name:
“_silgen_name特性可用于指明當前所引用的函數(shù)是一個遵循C語言標準ABI的函數(shù)?!?/p>
摘錄來自: “大話Swift 4.0”。 iBooks.
2.編譯標志:
@inline(__always) func debug_log(str: String) {#if DEBUGprint(str)#endif }debug_log(str: "Hello, world!!")3.檢查API的可用性:
if #available(iOS 11, *) {}?
到這里Swift4.0基礎(chǔ)又學習復習完了一遍,每次學習都有一些不一樣的收獲,希望自己Swift語言越來越熟練~~~加油?
轉(zhuǎn)載于:https://www.cnblogs.com/pengsi/p/8520910.html
總結(jié)
以上是生活随笔為你收集整理的Swift4.0复习特性、编译标志和检查API的可用性的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Xvid编码器流程(基于xvid1.1.
- 下一篇: 调用Xvid编码器流程(基于xvid1.