我有我的主應用程序委託,它包含一個返回對象的方法。此應用程序委託在主線程上運行。Objective-C 2.0中的多線程問題
我也有一個NSOperation在不同的線程上運行。除了希望能夠在我的主線程上調用我的應用程序委託方法,我還需要從我的NSOperation線程調用它來獲取它返回的對象。我的第一個問題是,如果我把這個從我的其他線程...
id newObject = [[[UIApplication sharedApplication] delegate] myMethod];
... ...將是法的同一個線程中的NSOperation上處理,還是會在同一個線程(主)作爲應用程序委託在?
我也想確保myMethod
中的代碼一次只能被我的操作線程或我的主線程調用一次。我可以在我的應用程序委託中創建一個NSLock實例var,並執行類似操作:
-(id)myMethod {
[myLock lock];
myObject = // Get or create my object to return
[myLock unlock];
return myObject;
}
感謝您的幫助!
邁克
感謝您有用的答案:-) – 2009-10-27 18:12:28
難道是肯定地說,一個@synchronized(個體經營)鎖定的方法{}塊會做同樣的事情,一個NSLock實例? – 2009-10-29 17:00:14
或多或少;實施細節略有不同,但影響是一樣的。 – bbum 2009-11-06 16:21:38