在Swift中,不需要prefix classes,因爲它們的模塊充當命名空間。前綴擴展函數
什麼是前綴擴展功能?例如:
extension UIImage {
public func hnk_hasAlpha() -> Bool { ... }
}
一方面,Swift不是動態的,所以碰撞會產生編譯錯誤。
但是,如果編譯後的代碼在未來的iOS/OS X版本中運行,而我的擴展方法之一被添加,會發生什麼情況?即使它們具有相同的簽名,不同模塊中的方法是否會被視爲不同的符號?
如果擴展類是NSObject子類或純Swift類,它會有所作爲嗎?
爲什麼您認爲向Apple提供的課程添加功能是一個好主意?爲什麼不寫一個函數。這對於使用代碼的未來開發者來說很明顯。或子類。 – zaph 2014-08-29 12:03:45
這個問題的技術方面與這個問題的技術方面無關,Swift是如何處理這種碰撞的。也就是說,我認爲擴展Apple類有助於在限制符號範圍的同時爲函數提供更好的上下文,並且實現自定義協議而不訴諸包裝對象等等。 – hpique 2014-08-29 12:37:35