2009-07-03 39 views

回答

5

以下是關於singletons的問題(和很好的答案)。

您還可以使用應用程序的委託,作爲frankodwyer建議,並獲得它從任何地方使用:

id delegate = [[UIApplication sharedApplication] delegate]; 

爲了方便使用和類型安全我用一個類別是這樣的:

// put his in your delegate header file 
@interface UIApplication(MyAppAdditions) 
+ (MyAppDelegate*)sharedDelegate; 
@end 

// put his in your delegate implementation file 
@implementation UIApplication(MyAppAdditions) 
+ (MyAppDelegate*)sharedDelegate { 
    return (MyAppDelegate*)[[self sharedApplication] delegate]; 
} 
@end 

現在你可以從任何地方訪問你的應用程序委託:[UIApplication sharedDelegate]

+0

+1很好 - 我不知道有一個快捷方式來獲得這樣的委託。我已經手動將其設置爲views .. doh的屬性! – frankodwyer 2009-07-03 12:00:39

2

您可以製作應用程序委託的整數和字符串屬性,並將對代理的引用傳遞給您的視圖。我自己也是這樣做的,儘管老實說這是一個痛苦,也是一個小錯誤,容易讓應用程序委託可用於所有視圖。

或者(這可能更好),你可以聲明一個單例類(谷歌單例模式)作爲你的數據類之一,並讓你的整數/字符串屬性。然後你可以從你的程序的任何地方訪問你的單身人士的getter/setter。如果您有多個線程,則需要格外小心,但是,