2015-04-07 57 views

回答

1

顧名思義,它是對類功能的擴展。您可以使用擴展爲課程添加額外的行爲。添加成員變量或存儲性能有即相當多的問題:

  1. 當它是可以添加數據成員在擴展原始類是不知道添加的數據成員的。這導致在爲這些類創建對象時分配給這些成員的問題。

  2. 它也可能會造成數據成員的初始化和取消初始化問題,因爲這些原始init()或deinit()方法不知道。

  3. 添加數據成員可能會改變類的行爲特性。

1

目前您無法將實例變量添加到類擴展中。對於swift和Obj-C都是如此。看到這個問題:Defining a property in iOS class extension

如果你的意思是,通過添加伊瓦的接口擴展:

@interface MyClass(){ 
    MyIvar *ivar 
} 

好,那是一個位的選擇和便利的問題。一般而言,您應該將公共接口限制爲允許用戶以您設計/期望的方式與課程進行交互的最小一組屬性/方法。雖然您的代碼可以使用任一方法正常工作,但暴露更多屬性/函數可能會導致更多問題,因爲使用類可能會使用未計劃或意外的方式使用屬性/函數。

相關問題