我经常得到一些我需要在其他线程上处理的回调,我想在一个线程上排队这些处理方法,所以它们会按顺序运行。我不想使用原始NSThread(因为工作量太大)而且不想使用GCD(因为需要支持iOS 3.1)。开始看NSOperation但是需要子类化,传递所需的数据等等。然后开始考虑runLoops ......无论如何,实现任务的方便方法是什么?
答案 0 :(得分: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