我看到一个类(继承自NSOperation
类),有.h和.m文件,但在实现部分中有-(void) main
方法和NSAutoReleasePool
对象,它看起来像应用程序本身的主方法,为什么在.m文件中需要这个名称的方法?
我看到一个类(继承自NSOperation
类),有.h和.m文件,但在实现部分中有-(void) main
方法和NSAutoReleasePool
对象,它看起来像应用程序本身的主方法,为什么在.m文件中需要这个名称的方法?
它只是NSOperation
上的一种方法。区别在于:
int main (int argc, const char * argv[])
main()是一个C函数,它是程序的起点。
- (void)main;
这是一个针对一个类的Objective-C实例方法。
它拥有自己的自动释放池是因为通常它会在一个独立的线程上被调用,所以这个新线程需要处理自动释放的对象。
引用苹果文档...
NSThread.h main
线程的主入口点例程。 - (void)main Discussion
此方法的默认实现采用用于初始化接收器的目标和选择器,并在指定的目标上调用选择器。如果您子类化了NSThread,则可以重写此方法并使用它来代替您的线程的主体。如果您这样做,您不需要调用super。
您永远不应直接调用此方法。您应始终通过调用start方法来启动线程。可用性
所以这就是每个线程中main的用途,每个线程都有自己的自动释放池...希望这能帮到你。