[問題] iPhone程式的進入點
研究了一陣子的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
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 3 篇):
MacDev 近期熱門文章
PTT數位生活區 即時熱門文章