準備好迎接 Swift 3.0 API 變化

398183216 8年前發布 | 7K 次閱讀 Swift Apple Swift開發

據 Chris Lattner 所說,即將發布的 Swift 3 將在我們熟悉的 Cocoa 和 CocoaTouch 上做出重大改變。

在 Swift 3 中, .blackColor() 變成了 .black()

這一變化包含在將 Objective-C API 轉化成 Swift 的提案 SE-0005 中。由于屬性名結尾的單詞和屬性類型已經包含了足夠的信息,因此可以刪掉 Color


class func darkGrayColor() -> UIColor
// 因此
foregroundColor = .darkGrayColor()
// 變成了
foregroundColor = .darkGray()

我簡單總結了幾條簡化規則。記住,如果以下規則(進行簡化)產生了一個不合法的結果(空的selectorSwift關鍵字等),那就不必遵循該規則。

簡化 #1:去除相同類型成員前邊的類型名稱:

let c = myColor.colorWithAlphaComponent(0.5)
// 變為
let c = myColor.withAlphaComponent(0.5)

簡化 #2:如果類型名后是 by + 現在分詞 動名詞 形式,則將 “by” 一同去掉。


let img = myImage.imageByApplyingOrientation(o)
// 變為
let img = myImage.applyingOrientation(o)

 

簡化 #3:當方法選擇器中含有類型名并滿足以下情況時,去掉類型名稱:

尾部位于: 需精簡部分:
引入參數的選擇器 參數類型名
屬性名稱 屬性類型名
無參方法名 返回類型名

documentForURL(_ url: NSURL)
var parentContext: NSManagedObjectContext?
class func darkGrayColor() -> UIColor
// 變為
documentFor(_ url: NSURL)
var parent: NSManagedObjectContext?
class func darkGray() -> UIColor

簡化 #4:去掉方法名中動詞后的類型名:


myVC.dismissViewControllerAnimated(...)
// 變為
myVC.dismissAnimated(...)

 

來自:http://swift.gg/2016/05/03/preparing-for-3-0-api-pruning/

 本文由用戶 398183216 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!