我有我的主应用程序委托,它包含一个返回对象的方法。此应用程序委托在主线程上运行。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