2010-04-14 44 views
2

在Objective-C的ApplicationDelegate.h中放置變量和方法簽名的主要目的是什麼?通過這樣做,所有這些方法和變量都可以被另一個視圖控制器類看到?這是關鍵嗎?應用程序的要點代理類

而且:每個項目裏面是否只有一個應用程序委託類?

回答

2

「通過這樣做,所有這些方法和變量都被另一個視圖控制器類看到了嗎?是這樣嗎?」

當然,任何導入應用程序控制器頭部的類都可以訪問公共屬性和方法(以及ivars),但這適用於任何類,而不僅僅是應用程序委託。

在應用程序委託中放置一些在應用程序中需要的重要對象和方法是很常見的。這樣,是的,這通常是你看到應用程序委託類定義的變量和方法的原因。

這有時候是有道理的,但它可以很快惡化爲壞設計。您應該確保不要將應用程序委託用作某個籃子,您可以在應用程序中拋出所有共享狀態和功能。我正在使用一些代碼,現在有人這樣做,而且它的極其難以改變和重構功能。

這只是使用全局狀態的所有問題的一個版本。簡而言之,您應該分析功能並將其分爲單獨的類或一組類。儘量讓您的應用程序代表儘可能苗條!

編輯:...並閱讀Matt Gallagher's post在這個問題上。

3

應用程序委託(並且是的,每個應用程序只有一個)是Cocoa和Cocoa Touch應用程序中Controller層的主幹。它的主要功能是在某些情況下(如應用程序終止,應用程序打開等)定製NS/UIApplication的行爲。它也常用於將代表分配給其他響應者(例如表視圖,大綱視圖等)。在小應用程序中,它通常充當大多數界面元素的委託和數據源,但正如Felixyz指出的那樣,如果應用程序增長,這可能會迅速惡化。

+0

標識應用程序委託類中的變量和方法????? – user310000 2010-04-14 13:55:13

+0

@ ahmet732:那是什麼樣的評論? – Felixyz 2010-04-14 13:58:24

+1

@Felixyz他錯過了一個'?',當你想象有六個時,它更容易理解。 – 2010-04-14 14:08:35