簡體   English   中英

Swift中的類擴展與子類化?

[英]Class extension vs. subclassing in Swift?

我使用的是第三方框架,它提供了一個實例只有屬性的類。 在我的應用程序中,我想為這個實例添加一個額外的屬性。 適用於這種情況的適當方法是什么?

a)在我的應用程序中擴展框架的類

b)創建框架類的子類並定義我需要的新屬性

提前致謝

它的

b)

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

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

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

  • 擴展可以添加新的計算屬性,但不能添加存儲的屬性,也不能將屬性觀察者添加到現有屬性

這取決於您期望實現的行為。

擴展:只能添加新方法計算變量 ,但您將在代碼中實現無縫工作。 無需在代碼中添加新類即可在任何地方使用新功能

子類:可以添加新變量覆蓋函數,但代碼中的占用空間更大。 您需要在整個項目中使用該特定子類。

我想這更像是一個設計問題。

我的建議:如果整個項目需要這個新行為,請使用擴展 ,否則使用子類

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM