在 Xcode 6.3 中,我們曾為 Objective-C 添加了新的 空值標記 語言特性。這個特點給了 Objective-C 語言一個與 Swift 相同的表達空與非空種類的 API 接口。Xcode中 7 通過給 Objective-C 引入輕量泛型模塊讓 Objective-C 與 Swift 溝通更加自然。泛型允許兩個語言安全的溝通和分享保存了特定種類元素的合集。
這些特性對任何寫 同時包含 Swift 和 Objective-C 代碼的 APP 的人來說都很有用。但是這裡還有一些 Objective-C 開發者每天都在使用的更大的合集代碼:組成蘋果 SDK 的那些框架。為了提高 Swift 和 Objective-C 的操作體驗,我們傾全公司的努力來在我們的 SDK 頭提供這個信息。在 Xcode 7你將會發現幾乎所有的常見框架現在都在它們的 API 和合集類型的元素上支持了可空屬性。這使得我們的 Swift 接口從這樣:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
class UIView : UIResponder { init!(frame: CGRect) var superview: UIView! { get } var subviews: [AnyObject]! { get } var window: UIWindow! { get } // ... func isDescendantOfView(view: UIView!) -> Bool func viewWithTag(tag: Int) -> UIView! // ... var constraints: [AnyObject]! { get } // ... } |
變成這樣:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
class UIView : UIResponder { init(frame: CGRect) var superview: UIView? { get } var subviews: [UIView] { get } var window: UIWindow? { get } // ... func isDescendantOfView(view: UIView) -> Bool func viewWithTag(tag: Int) -> UIView? // ... var constraints: [NSLayoutConstraint] { get } // ... } |
最後一個問題是 Xcode 7 轉換你代碼到 Swift 2 的工具。這個工具存在於 Xcode 的 Edit 菜單, 兌換 > 要最新斯威夫特語法 。這個工具能把使用 Swift 1.2 編寫的項目轉換到合適的 Swift 2 版本,還會修改一些必要的配置。這些更改體現在升級的頭部信息上。舉個栗子,重寫一個方法的時候它的參數和返回類型現在更加清晰易讀,遷移器會更新你的方法來匹配之。
對於 Objective-C 的改善在 WWDC 的 Swift 和 Objective-C 的交互性 14分30秒處開始。不過這個視頻使用 Xcode 6.3 __可為空的 語法與 Xcode 7 中更新了的 _Nullable 語法不同。更多關於可空標註的信息,參見博文 空屬性和 Objective-C 。對於 Swift 2 和 Objective-C 的輕量泛型,移步 Xcode中 7 發布註釋 來了解更多。
本文由落格博主作為學習之用個人翻譯,版權歸蘋果官方博客所有,侵刪。
如果要轉載,请著明本页面的链接!
本文由 落格博客 原創撰寫:落格博客 » Swift 開發者的 SDK
轉載請保留出處和原文鏈接:https://www.logcg.com/archives/1153.html