2012-03-02 29 views
0

我经常收到一些我需要在其他线程上处理的回调函数,我想将这些处理方法排列在一个线程上,以便它们按顺序运行。我不想使用原始的NSThread(因为工作太多),也不想使用GCD(因为需要支持iOS 3.1)。开始查看NSOperation,但需要继承,传递所需的数据等。然后开始考虑runLoops ......无论如何,实现这个任务的便捷方式是什么?如何在其他线程上排列我的方法回调?

+0

线程从来不简单。使用它们时,你总是需要做一些工作。 – v1Axvw 2012-03-02 15:32:23

回答

1

NSOperation比运行循环更容易设置。你不会说你的回调是什么。它们是否起作用?选择?块?对象?

您的NSOperation子类只需要覆盖main并提供一种将回调传递给操作的方法。

@interface MyOperation : NSOperation 
{ 
@private 
    CallbackType callback; // is e.g. a function pointer 
    void* context;   // a parameter for the callback as an example 
} 
-(id) initWithCallback: (CallbackType) newCallback; 
      andContext: (void*) newContext; 
@end 

@implementation MyOperation 

-(id) initWithCallback: (CallbackType) newCallback 
{ 
    self = [super init]; 
    if (self != nil) 
    { 
     callback = newCallback; 
     context = newContext; 
    } 
    return self; 
} 

-(void) main 
{ 
    callback(context); 
} 

@end 
+0

我正在使用套接字流,并且我正在调用 - (void)流:(NSStream *)theStream handleEvent:(NSStreamEvent)当从流中读取数据时的streamEvent。我想将读取流的处理放入队列中。但我需要通过(有一个处理程序当前theStream,指向声明的inputStream和outputStream,传递缓冲区(NSMutableData)。 – Centurion 2012-03-02 16:19:15

相关问题