在创建 NSOperation 并将其放入 NSOperationQueue 时,我从未看到 main() 被调用。只有 start() 被调用。我没有做任何花哨的事情,真的。作为一个简单的测试,我写了这个:
NSOperationQueue *testOperationQueue = [[NSOperationQueue alloc] init];
MyTestOperation *testOperation = [[MyTestOperation alloc] init];
[testOperationQueue addOperation:testOperation];
在 MyTestOperation.m 中:
- (void)main
{
NSLog(@"testing if main is getting called");
}
- (void)start
{
NSLog(@"testing if start is getting called");
}
MyTestOperation.h 看起来像这样:
#import <Foundation/Foundation.h>
@interface MyTestOperation : NSOperation
@end
我错过了一些明显的东西吗?
[编辑注意:我实际上是指非并发,而不是并发(如上一个标题中所写)。]