Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 如何找出在Xxode中首先运行的文件_Objective C_Cocoa_Cocoa Touch - Fatal编程技术网

Objective c 如何找出在Xxode中首先运行的文件

Objective c 如何找出在Xxode中首先运行的文件,objective-c,cocoa,cocoa-touch,Objective C,Cocoa,Cocoa Touch,在包含大量.h和.m文件的Xxode项目中,如何确定首先执行哪个文件?包含int main(int argc,char*argv[])的文件将首先运行,因为main()函数是第一个运行的函数。在几乎每个Xcode模板项目中,该文件都称为“main.m” 编辑 通常,Cocoa Touch应用程序的main()功能如下: int main(int argc, char *argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool all

在包含大量.h和.m文件的Xxode项目中,如何确定首先执行哪个文件?

包含
int main(int argc,char*argv[])的文件
将首先运行,因为
main()
函数是第一个运行的函数。在几乎每个Xcode模板项目中,该文件都称为“main.m”

编辑

通常,Cocoa Touch应用程序的
main()
功能如下:

int main(int argc, char *argv[]) {
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    int retVal = UIApplicationMain(argc, argv, nil, nil);
    [pool release];
    return retVal;
}
(如果您正在编写Mac应用程序,请替换并删除自动释放池)

编辑#2


我只对首先从classes文件夹运行的文件感兴趣

简单的答案是“应用程序委托”,然后是其他所有内容

技术上的答案是,MainMenu.xib(Mac)或MainWindow.xib(iOS)文件中的任何对象都将首先实例化。通常,该文件中的对象将按照它们出现的顺序进行实例化,但我认为这不能保证

因此,如果MainWindow.xib文件中有定制的顶级对象,那么它们将同时被实例化(在合理范围内)。首先他们的
initWithCoder:
方法将执行,然后一段时间后他们的
awakeFromNib
方法将执行(这通常是该对象最安全的“起点”)


应用程序委托启动方法也将发生在其中的某个地方(我相信介于
initWithCoder:
awakeFromNib
)。

包含
int main(int argc,char*argv[])的文件
将首先运行,因为
main()
函数是第一个运行的函数。在几乎每个Xcode模板项目中,该文件都称为“main.m”

编辑

通常,Cocoa Touch应用程序的
main()
功能如下:

int main(int argc, char *argv[]) {
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    int retVal = UIApplicationMain(argc, argv, nil, nil);
    [pool release];
    return retVal;
}
(如果您正在编写Mac应用程序,请替换并删除自动释放池)

编辑#2


我只对首先从classes文件夹运行的文件感兴趣

简单的答案是“应用程序委托”,然后是其他所有内容

技术上的答案是,MainMenu.xib(Mac)或MainWindow.xib(iOS)文件中的任何对象都将首先实例化。通常,该文件中的对象将按照它们出现的顺序进行实例化,但我认为这不能保证

因此,如果MainWindow.xib文件中有定制的顶级对象,那么它们将同时被实例化(在合理范围内)。首先他们的
initWithCoder:
方法将执行,然后一段时间后他们的
awakeFromNib
方法将执行(这通常是该对象最安全的“起点”)


应用程序委托启动方法也会发生在那里的某个地方(我相信介于
initWithCoder:
awakeFromNib
之间)。

另一件应该首先运行的事情是在应用程序委托中(定义如下:
NSObject
和nib中的设置)方法
applicationdFinishLaunching

从技术上讲,这显然不是第一件要运行的事情。主循环和UIApplication中的任何内容都将首先执行,但一般来说,这是iOS应用程序的良好起点,也是您真正拥有控制权的第一个地方

您还可以创建一个名为“Controller”的类,并将NSObject拖动到nib中,然后将该类设置为Controller。然后将调用方法
awakeFromNib


这两个选项中的任何一个都可以设置你的应用程序

另一件应该首先运行的事情是在应用程序委托中(定义如下:
NSObject
并在nib中设置)方法
applicationdFinishLaunching

从技术上讲,这显然不是第一件要运行的事情。主循环和UIApplication中的任何内容都将首先执行,但一般来说,这是iOS应用程序的良好起点,也是您真正拥有控制权的第一个地方

您还可以创建一个名为“Controller”的类,并将NSObject拖动到nib中,然后将该类设置为Controller。然后将调用方法
awakeFromNib


这两个选项中的任何一个都可以设置你的应用程序

Cocoa和Cocoa Touch应用程序完全由事件驱动。通过读取源代码文件并不能理解方法的执行顺序

  • 正如Dave所解释的,程序的条目位于
    main.m
    中的
    main
    函数中。它会立即调用
    UI/NSApplicationMain
  • NS/UIApplicationMain
    是Cocoa(-Touch)提供的一项功能。它监视用户交互,并相应地触发事件。
    • 例如,当用户单击按钮时,系统会自动调用您在xib文件中指定的操作方法
    • 另一个例子是您提供的
      drawRect:
      方法:当系统决定在屏幕上绘制对象时调用该方法。非常重要的是,你不能主动地在屏幕上画画。系统要求您绘制屏幕,您做出响应
    • 一组重要的事件是在程序开始时调用的事件,如
      ApplicationIDFinishLaunching:
      或从xib文件
      viewDidLoad
      加载视图时调用的事件
  • Aaron Hillegass对这种情况做了一个很好的类比:你是KITT,响应Michael Knight的命令,而不是相反。你需要超过一定的年龄才能理解这个类比

Cocoa和Cocoa Touch应用程序完全由事件驱动。通过读取源代码文件并不能理解方法的执行顺序

  • 正如Dave所解释的,程序的条目位于
    main中的
    main
    函数中。