在Cocoa/Objective C中,靜態類方法是否線程安全?我正在定義一個類來進行相關的自定義URL請求,我想從多個不同的線程調用。比方說,我有一個類:可可/目標C:方法和線程安全
@interface URLConnector : NSObject {
}
+(Response *)getData:(NSString *)category;
+(Response *)put:(NSString *)category content:(NSData *)content;
@end
每種方法定義NSMutableURLRequest,調用它,並使用NSRunLoop:runUntilDate:等待響應。他們還創建另一個類的實例,URLConnectorDelegate處理來自NSMutableRequests的回調,並在返回之前釋放它們。 (注:此代碼是基於使URL請求一個流行的公共圖書館)
我喜歡這種方法,它使所有的線程簡單,把所有的定製服務器相關的代碼在一個地方。線程可以通過一個函數調用來執行URL請求。
我的所有線程一次使用這些靜態功能,同時通話(即是靜態的Objective-C的方法,本質上就是線程安全的)?
因此,就他們的局部變量而言,這兩種方法都是線程安全的嗎?例如,如果我在方法中迭代本地變量 - for(int i = 0; i <20; i ++) - 如果兩個線程同時運行該方法,這會導致衝突嗎? – Colin
@Colin:堆棧中的任何本地變量都是線程本地的,因此是安全的。所以只要你不使用標記爲「靜態」的變量,或者以任何其他方式保持超出方法範圍,你就是安全的。 – PeyloW