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];