2016-08-08 132 views
1

我使用第三方框架提供了一個實例只有屬性的類。在我的應用程序中,我想爲此實例添加一個額外的屬性。這種情況下適當的方法是什麼?Swift中的類擴展與子類化?

一)在我的應用程序

B)創建框架的類的子類,定義了新的屬性,我需要提前

感謝擴展框架的類

回答

8

這是

b)

因爲在類擴展中添加(存儲)屬性不是 支持的。

有使用擴展兩個重要的規則:

  • 擴展可以添加新的功能,以一個類型,但它們不能覆蓋現有的功能

  • 擴展可以添加新的計算性能,但他們無法添加存儲的屬性,或將屬性觀察者添加到現有屬性中

2

這取決於您期望達到的行爲。

擴展:可以添加新方法計算瓦爾,但你會實現你的代碼無縫工作。新的功能沒有在你的代碼中添加新的類

子類的任何地方:可以添加新瓦爾覆蓋功能但代碼中的更大的足跡。您需要在整個項目中使用該特定的子類。

我想這是更多的設計問題。

我的建議:如果整個項目需要這種新的行爲使用擴展,否則

+0

謝謝你的回答 – AppsDev

+1

我認爲最後一點經常被忽視。擴展是全局性的,因此它們會影響可能不想要複雜性的代碼部分。出於這個原因,我認爲他們應該避免在這種情況下。 – LegendLength