- @inline(內(nèi)聯(lián))
//聲明這個函數(shù)絕不(never)編譯成內(nèi)聯(lián)(inline)的形式
@inline(never)
func foo() {
print("愛情也會帶來折磨")
}
//聲明這個函數(shù)總是(always)編譯成內(nèi)聯(lián)(inline)的形式
@inline(__always)
func foo() {
print("愛情也會帶來折磨")
}
- @discardableResult(結(jié)果可丟棄)
//當我們調(diào)用foo()方法的時候,如果該方法有返回值,但是返回值我們又不想使用的時候,可以在方法前加上@discardableResult,這樣就不會報警告了
@discardableResult
func foo(a:Int) -> String {
return String(a)
}
- @available(可用的)
//introduced:引入;deprecated:棄用; unavailable不可用的
//這里是聲明foo()函數(shù)只能在iOS上使用不能在OSX等其他設(shè)備上使用,而且該方法只能在Target大于8.0且小于10.3能使用。
//unavailable聲明該方法不可用,錯誤信息就是message的提示語。
@available(iOS, introduced: 8.0, deprecated: 10.3, unavailable, message: "這個方法不能用啦")
func foo() { }
4.@noreturn
//@noreturn
func foo() -> Never {
// return ""
fatalError("Something very, very bad happened")
}
如果某個函數(shù)一定不需要返回參數(shù),可在函數(shù)末尾加 -> Never,而不再使用@noreturn。
fatalError():致命錯誤
在調(diào)試時我們可以使用斷言來排除類似這樣的問題,但是斷言只會在 Debug 環(huán)境中有效,而在 Release 編譯中所有的斷言都將被禁用。在遇到確實因為輸入的錯誤無法使程序繼續(xù)運行的時候,我們一般考慮以產(chǎn)生致命錯誤 (fatalError) 的方式來終止程序。