2011-03-18 66 views

回答

6

迦勒是正確的,添加下列的尖端節省了打字和了AppKit和UIKit之間增加的對稱性。

如果你是Mac程序員,你很可能用來訪問像這樣的委託,

[NSApp delegate] 

在了AppKit,NSApp表示被定義的話,

#define NSApp [NSApplication sharedApplication] 

因此,要獲得類似的東西在iOS中做到這一點,

#define UIApp [UIApplication sharedApplication] 

然後訪問,你會做這樣的委託:

[UIApp delegate] 
3

id<UIApplicationDelegate> delegate = [[UIApplication sharedApplication] delegate];

+1

我不太確定指定協議的具體內容在這裏購買。 – 2011-03-18 16:31:50

+2

我只是試圖讓你明白,你回來的對象可以是任何類型(id),但它應該實現協議。如果您知道委託的類型,請改用它。在實踐中,如果可能的話,我會盡量避免訪問應用程序委託。這通常是爲了在不同的對象之間共享數據,並且有更好的方法來做到這一點。 – Caleb 2011-03-18 16:44:19

+0

Caleb我認爲應用程序委託是打擊單身人士過度使用的好方法。如果我的應用程序中有一個應該在整個應用程序中共享的對象,那麼我只是將它作爲App委託的一個屬性。在需要該對象的其他類中定義一個只讀屬性,該屬性只是從App委託中返回對象。 – Tobias 2011-03-18 17:20:21

相關問題