cocoa提供了NSOperation和NSOperationQueue用来实现多线程,它们封装了NSThread。
可以把一个任务定义为一个类:
@interface MyOperation : NSOperation {//让它继承NSOperation
int num;
}
- (id)initWithNum:(int)newNum;
@end
NSOperation代表一个线程,你需要实现它的main函数:
@implementation MyOperation
- (id)initWithNum:(int)newNum{
if ((self = [super init])) {
num = newNum;
}
return self;
}
- (void)main{
for (Byte i = num; i < 100; i++) {
NSLog(@"%d\n",i);
[NSThread sleepForTimeInterval:1];
}
}
@end
main函数负责完成线程的任务。
然后你可以在主线程中启动子线程:
MyOperation *operation = [[MyOperation alloc] initWithNum:0];
NSOperationQueue *queue = [[[NSOperationQueue alloc] init] autorelease];
[queue addOperation:operation];
通过addOperation方法把NSOperation加入到NSOperationQueue中,就会自动启动线程。