2011-03-03 73 views

回答

48

我不太清楚你的意思 - 有多種方法可以從您的應用程序委託信息到視圖控制器和短語「而無需創建委託的參考」目前還不清楚。您的選項基本上是:

  1. 引用應用程序委託,根據需要進行轉換。您可以在您的視圖控制器類中編寫代碼,如:
    id propertyValue = [(MyAppDelegate *)[[UIApplication sharedApplication] delegate] myProperty];
  2. 在創建視圖控制器時傳遞屬性。這需要視圖控制器有一個@property聲明和@synthesize D供使用,那麼你會讓應用程序委託只是在視圖控制器實例上設置屬性。

這些選項都不需要您保留應用程序委託的副本,作爲@property,但第一個參考代碼只會引用一次委託。

+0

還有一個問題[UIApplication sharedApplication] .delegate;這是一個standrad方式,爲什麼我問我需要在3個不同的類文件中稱爲「sharedObject」的屬性,「sharedObject」駐留在AppDelegate類? – Anandh 2011-03-03 02:39:47

+1

除非你想創建一個單獨的類來容納屬性,否則使用'[[UIApplication sharedApplication]委託]'是在多個類中訪問該屬性的標準方式。 (說實話,無論如何,你基本上都是在訪問一個單身人士,不需要乘以單身人士。) – Tim 2011-03-03 03:06:56

19

[UIApplication的sharedApplication] .delegate

您還需要包括應用程序委託頭文件在您的視圖控制器,並可能強制轉換從ID授人以您的實際應用程序委託類。

#include "MyAppDelegate.h" 

((MyAppDelegate *)[UIApplication sharedApplication].delegate).myProperty; 
2
[UIApplication sharedApplication].delegate; 
+0

我正在尋找替代方法來實現除了[UIApplication sharedApplication] .delegate;之外的其他方法。 1.類似於通過發佈/訂閱訪問價值? 2.還有一個問題[UIApplication sharedApplication] .delegate;這是一個standrad,爲什麼我問的是我需要在3個不同的類文件中稱爲「sharedObject」的屬性,「sharedObject」駐留在AppDelegate類? – Anandh 2011-03-03 02:37:45