Objective c 在非并发操作中未调用main()

Objective c 在非并发操作中未调用main(),objective-c,nsoperation,nsoperationqueue,Objective C,Nsoperation,Nsoperationqueue,创建NSOperation并将其放入NSOperationQueue时,我从未看到调用main()。只有start()被调用。我不是在做什么花哨的事,真的。作为一个简单的测试,我写了以下内容: NSOperationQueue *testOperationQueue = [[NSOperationQueue alloc] init]; MyTestOperation *testOperation = [[MyTestOperation alloc] init]; [testOperationQu

创建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
#导入
@接口MyTestOperation:NSOperation
@结束
我错过了什么明显的东西吗


[编辑说明:我实际上指的是非并发,而不是并发(如前一篇文章中所述)。

我仔细研究了你的代码,注意到如果我完全注释掉你的
start
方法,那么
main
方法就会运行。在更仔细地阅读了
start
的文档后,我发现这一行:

此方法的默认实现更新操作的执行状态,并调用接收方的
main
方法


因此,通过使用未调用
main
的实现覆盖
start
,您有效地缩短了操作,并且永远不允许它真正开始工作!因此,您或者需要在
start
方法中显式调用
main
,或者如果您没有实际使用
start
来执行设置/更新执行状态等操作,则需要一起消除
start

什么是“
@interface
”.h文件用于“
MyTestOperation
”看起来像?我已经包括了上面的MyTestOperation.h。是的。我尝试了同样的方法,只是重写了main(left start()out),现在调用了main。谢谢你的澄清!