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