将对象传递给NSThread并继续发送消息?

时间:2010-05-14 14:35:16

标签: iphone nsthread

我可以找到关于NSThreads的所有示例/教程以及我处理过它们的唯一方法是使用[NSThread detachNewThreadSelector:@selector(processDataMethod) toTarget:self withObject:nil];将方法中的所有处理移动到另一个运行自己的autoreleasePool等的线程。

这对于“一次拍摄”操作来说是有益的,它应该只是执行并“消失”。

我必须在突发中进行许多小型Web服务调用,并且我想创建一个NSThread对象,该对象在应用程序运行期间保持不变。主要是为了 防止在突发发生时产生许多新线程。

我看了initWithTarget[NSThread start]这似乎与我想要做的事情有关。我只是不确定如何将它放在一起,线程是否进入我的对象,我是否将对象传递给我的线程等。

以伪代码/解释方式,我试图实现这个:

MyController;

@interface
NSThread *threadProperty; //a property, holding a thread I would like to message
MyWebService *webServiceObject; //the Class that holds web service methods e.g. - (NSArray*) searchFor:(NSString*) searchStr; 

on viewDidLoad:

instantiate webServiceObject;
instantiate threadProperty;
hand threadProperty the webServiceObject.
start the thread. //make it go forever with [[NSRunLoop currentRunLoop] run];

on user does something:
tell the thread to tell the webServiceObject to searchFor:@"Foo";

on thread has a response:
thread says webServiceObject says there are 19 @"Foo" up in the cloud.

我一直在摆弄如何让它发挥作用,但意识到我不理解 这个主题足以提出一个“模式”来实现它。 我想我试图在一个生活在一个单独的连续线程中的对象上实现一个方法调用集群,而不是每次我需要一个特定的方法调用时产生一个线程(可能在500毫秒内连续8次。然后不是所有2分钟)。

我希望这是有道理的,并且那些在线程方面更有经验的人可以指出我正确的方向。


这篇文章非常接近我的尝试:how to use performSelect...

0 个答案:

没有答案