這不是在控制器之間傳遞信息的安全方式。如果你在你的應用程序中使用它,並且它正在工作,我確實很驚訝。
正確的做法是將您需要的值從一個控制器傳遞到另一個控制器。下面的示例使用應用程序委託存儲值,然後每個控制器讀取/寫入數據... 這只是一個示例,請注意使用應用程序委託作爲存儲庫,以便成爲有效的全局變量。在應用程序委託中設置大量變量以便以這種方式使用會使您的應用程序難以維護。
在App Delegate.h
@interface AppDelegate : NSObject <UIApplicationDelegate> {
int sharedInt;
}
@property int sharedInt;
在App Delegate.m
@synthesize sharedInt; // this will automatically create the getters and setters
然後在你想設置的值時,控制器:
ApplicationDelegateClassNameHere * applicationDelegate = [[ UIApplication sharedApplication] delegate];
applicationDelegate.sharedInt = 3;
然後在控制器中您想要讀取的值:
ApplicationDelegateClassNameHere * applicationDelegate = [[ UIApplication sharedApplication] delegate];
if (applicationDelegate.sharedInt == 3) {
//do your stuff here
}
編輯:忘了@synthesize。
編輯:根據Kenneth Ballenegger的建議,從代理單例方法中輸入返回值,以消除編譯器警告。
來源
2009-05-18 15:53:09
mmc
感謝您的詳細答案,因爲我對此很陌生,完整的代碼確實有幫助。我確實實現了這一點,它的效果很好。謝謝, – Aaron 2009-05-18 23:05:58