用戶默認值是一個很好的地方,可以將首選項和信息不會更改,或者每次會話需要訪問超過兩次或三次。訪問默認值意味着點擊緩慢的磁盤;你不想將它用於每分鐘多次檢查一次標誌等。
的應用程序委託是存儲真正需要是在應用程序中許多對象訪問信息的方便的地方,因爲它總是通過[[UIApplication sharedApplication] delegate]
訪問,但你應該仔細考慮您的應用程序設計的稱重該對象來與前只是因爲它看起來很方便而有很多ivars。
大概只有一個對象,可能是一個視圖控制器,它負責發送這些請求。那是放旗的地方。從你的描述來看,它聽起來並不像你需要一個應用程序全局變量。該標誌僅由發起請求的對象使用,因此它是唯一需要了解它的對象。國旗可以是伊娃。
如果實際上你有一個類,它可能有許多實例會發出一個請求,那麼正確的解決方案應該是有一個任何實例都有權訪問的類級標誌。這很簡單。在實現文件中,聲明一個變量來保存標誌:
// RequestMaker.m
#import "RequestMaker.h"
static BOOL allowSyncRequest = YES;
@implementation RequestMaker
// etc.
它宣佈static
,使其只在這個「編譯單元」可見(鬆散,在這個文件)。
然後創建一個類的方法各設置和獲得此標誌:
+ (BOOL) allowSyncRequest {
return allowSyncRequest;
}
+ (void) setAllowSyncRequest: (BOOL)b {
allowSyncRequest = b;
}
現在,每次你RequestMaker
實例中的一個要開始的請求時,它應該檢查該標誌;如果是YES
,那麼您可以關閉標誌並開始請求。當請求結束時,您還需要確保重置該標誌。
(這一切都假定你沒有明確的工作對你的要求不同線程。如果你是,那麼你應該看看GCD queues也許信號燈。有一個很好的一套writeups by Mike Ash,讓你開心閱讀甚至不想使用GCD。)