作者denru01 (阿儒)
看板MacDev
标题[问题] iPhone程式的进入点
时间Wed Jul 1 16:42:43 2009
研究了一阵子的iPhone开发,也写过一些小小的程式。
自以为已经对Mac. iPhone程式开发有一定的程度。
这阵子比较有空,仔细将iPhone程式流程想一想
才惊觉我对iPhone的流程不甚了解。
一开始的进入点就卡关了....
在一般的C++程式,进入点就是main()
然後一行一行的执行,没什麽大问题。
我选择了最简单(应该是吧?)的template --- iPhone - Window-Based
来研究整个运作流程。
档案内含有三个程式码档案 --- AppDelegate.h .m 和 main.m
AppDelegate是NSObject的subclass,UIApplicationDelegate的delegate。
只含有一个UIWindow的ivar
并implement两个函式 --- applicationDidFinishLaunching: . dealloc:
以下是main.m的内容:
int main(int argc, char *argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, nil, nil);
[pool release];
return retVal;
}
我想流程是
程式执行先进入main,建路autorelease pool
接着进入UIApplicationMain进行初始化,里面会呼叫他的delegate --- AppDelegate
中的applicationDidFinishLaunching method
将AppDelegate中的window显示出来,并将控制权交给AppDelegate。
结束流程。
如果是这样的话,为什麽没有看到类似xxxxx.delegate = self; 的命令句?
UIApplicationMain怎麽会知道要将工作交给AppDelegate执行呢?
还是说UIApplicationMain是在Build时才生成,会将AppDelegate这个物件包进程式码中?
不好意思,讲的很乱。
谢谢!
--
▂▃▄▃▂
◢
˙ ◣
˙ ▅
▉▃ /◤
喵喵~~~~
▊▏
◣╲ˍ ╱▎
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.162.85.94