2014-03-12 54 views
-4

我是Objective-C的新手,對iOS也是如此。我一直在開發Android應用程序 - 因此使用Inheritance很舒服。但在iOS中,幾乎所有內容都是使用授權實現的。所以基本上我的問題是:Objective-C中的繼承,授權,類別和觀察者模式有什麼區別?

  • 這四個概念和何時使用每個概念有什麼區別?使用每種方法有哪些優缺點?

我在Stackoverflow上搜索了這個問題,但沒找到任何地方,我可以一起找到這些概念。

+0

您提出的問題太寬泛,無法形成答案。我只能指出你很少的資源:[iOS設計模式](http://www.raywenderlich.com/46988/ios-design-patterns),[可可基礎知識指南](https://developer.apple.com/遺留/庫/文檔/ Cocoa/Conceptual/CocoaFundamentals/CocoaDesignPatterns/CocoaDesignPatterns.html#// apple_ref/doc/uid/TP40002974-CH6-SW6) – Amar

+2

這些是一堆無關的東西。你基本上要求我們重寫大部分語言的文檔。只需閱讀文檔即可。 – Chuck

回答

1

繼承:由你繼承基類的屬性子類

方式。所有公共和受保護的成員都被繼承到子類。 * Obj-C沒有私人成員,所以這不起作用(然而,你通過類擴展創建它們,即使有一些黑客可以訪問它)。

代表團:由您委託一類的任務,另一

方式。經常使用的班級和代表是UITableViewDelegate。這總是1比1。可以使用回調和返回值。

分類:按您添加新的方法,以現有的類

方式。當你這樣做時,子類也可以使用分類方法。你永遠不會使用類別添加屬性。 *但是,您可以使用關聯對象進行添加。

觀察者模式:

一類用作廣播和廣播消息。它並不關心其他人是誰的觀察員或接受者。所有觀察者都會收到觀察者發送的通知,並開始執行該消息。這可以是1比0,1比1或1比1。即使不止一個廣播公司也可以發送相同的通知,因此您可以說-to-。此處不發送回叫或返回值。

+0

因此,委託與觀察者模式之間的唯一區別是「返回值已發送」? –

+1

在委託中,它可能在觀察者中返回一個值,但它不能。即使你的程序運行良好,也可能沒有任何觀察者,但是在委託的情況下,委託必須存在,否則將會崩潰! –

+0

對於任何使用委託的類,委託必須始終存在或程序崩潰,這是不正確的。事實上,這聽起來對我來說很不好。 – Chuck

相關問題