Objective C繼承和物件導向的原則

2021-08-26 14:00:53 字數 895 閱讀 1222

但這些都不是最大的問題。最大的問題在於,xib物件違反了物件導向的原則,你無法繼承乙個xib物件。

我們用純**編寫的物件,通過類的繼承關係,可以很方便地重用**。而使用ib的話,你無法做到這一點。你很辛苦地在ib裡設計了乙個view controller,而且為它編寫了許多**。你想在子類中擴充套件它,那麼你必須注意一些問題。

1、在**中宣告繼承,而不是在ib中設定屬性。保持這樣的觀念:xib物件只是持久化物件,而永遠不可能是真正的類。

2、如果你要改變xib檔案,那麼請使用新的xib檔案拷貝。

3、如果你需要做自定義的初始化動作,請過載initwithnibname:bundle:方法,並確保呼叫了[super initwithnibname:bundle:]方法。

4、父類方法**中引用到的xib物件,必須用「self.屬性名」的方式引用,不要直接以「屬性名」的方式引用,否則屬性指向的是父類的xib物件,而不是子類的xib物件。

5、父類方法中引用到的成員變數,直接用「屬性名」而不是「self.屬性名」的方式引用。

6、父類中,對於屬性別名,必須使用「self.屬性名」的方式引用,不能以「屬性別名」的方式引用。

7、如果子類使用不同的xib檔案,則所有的iboutlet必須重新宣告並連線。因為ib不會自動連線和共用父類的**。

8、如果你重新宣告了ibaction,則你可以不用實現動作,缺省會使用父類已實現的action。如果你想實現不同的動作,你必須覆蓋action 。

可以看到,在包含有xib物件的繼承當中,需要注意的地方非常多,也許還不止上面列出的那些。我在乙個專案中曾經試圖繼承乙個用ib構建的view controller,發現最終的結果還是不得不重新實現所有的父類方法。

因此,在使用了ib之後,我們就很少能體會到物件導向的好處了——這才是程式設計師在某些情況下拒絕使用ib的真正原因。

物件導向和面向過程

面向過程就是分析出解決問題所需要的步驟,然後用函式把這些步驟一步一步實現,使用的時候乙個乙個依次呼叫就可以了。物件導向是把構成問題事務分解成各個物件,建立物件的目的不是為了完成乙個步驟,而是為了描敘某個事物在整個解決問題的步驟中的行為。例如五子棋,面向過程的設計思路就是首先分析問題的步驟 1 開始遊...

物件導向和面向過程

物件導向和面向過程的區別 面向過程 更加關注整個程式的實現流程 物件導向 更加關注整個程式中有哪些類,每個類有哪些屬性,有哪些行為,它將整個功能劃分為許多小功能,分散到不同的類中,使用時,僅需命令相應的類完成相應的事情 物件導向的優勢 1.更高的容錯率 2.更易閱讀的 3.更易擴充套件 物件導向的劣...

物件導向和面向過程

面向過程 顧名思義,其中心意義在於 過程 二字,比如你要吃飯,那麼首先是要選地,播種,施肥,成熟,收穫,煮飯,然後才能吃飯,那麼面向過程就是從開始到結束,分析出解決問題的需要的每乙個步驟,然後用函式將這些步驟乙個乙個實現,使用的時候乙個乙個一次呼叫就行了。物件導向 同樣的,你去飯店吃飯的時候,只需要...