在类的实现部分中,void main方法的含义是什么?

4

我看到一个类(继承自NSOperation类),有.h和.m文件,但在实现部分中有-(void) main方法和NSAutoReleasePool对象,它看起来像应用程序本身的主方法,为什么在.m文件中需要这个名称的方法?


嘿,我按照你的问题回答了,但你改变了问题并把分数给了别人 :-D - Kirby Todd
3个回答

5

它只是NSOperation上的一种方法。区别在于:

int main (int argc, const char * argv[])

main()是一个C函数,它是程序的起点。

- (void)main;

这是一个针对一个类的Objective-C实例方法

它拥有自己的自动释放池是因为通常它会在一个独立的线程上被调用,所以这个新线程需要处理自动释放的对象。


2
也许是NSThread或NSOperation的子类?它们有自己的main()方法。

我已经更新了我的问题,那么处理这些类的标准方式是什么?你能解释一下为什么要在它们中有一个主方法吗? - JAHelia

1

引用苹果文档...

NSThread.h main

线程的主入口点例程。 - (void)main Discussion

此方法的默认实现采用用于初始化接收器的目标和选择器,并在指定的目标上调用选择器。如果您子类化了NSThread,则可以重写此方法并使用它来代替您的线程的主体。如果您这样做,您不需要调用super。

您永远不应直接调用此方法。您应始终通过调用start方法来启动线程。可用性

所以这就是每个线程中main的用途,每个线程都有自己的自动释放池...希望这能帮到你。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接