2012-01-21 50 views
-3

在控制檯應用程序中,通常會有一個主文件,您可以在其中輸入您希望程序執行的操作。在事件驅動的GUI程序中,每個函數都有事件處理程序(例如在Visual C#Windows窗體中)。使用GUI的Cocoa應用程序中的入口點/控制流程是什麼?

在Cocoa GUI應用程序中,我沒有看到可以創建變量和運行命令的集中位置。例如,我可以創建一個新類並定義其所有成員函數和數據,但是我沒有實際創建該類的新對象的地方。我在哪裏放置「實際計劃」?我找不到一個將程序的所有部分放在一起的文件,我似乎只能定義類。一個主文件和函數存在,但它們不應該被使用 - main()只是啓動應用程序。

這是如何工作的?我在哪裏把我的程序的代碼?

+0

http://gnustep.made-it.com/BG-objc/#AEN73 –

+0

對不起,我的錯誤,我正在談論在Cocoa中使用Objective C而不是在控制檯應用程序中。 – fdh

+0

@Farhead這與入口無關嗎? –

回答

4

可可是一個事件驅動的環境中,像.NET許多方面。在絕大多數情況下,系統會打電話給你,而不是你打電話給你。所以就像你在使用C#時的經驗一樣,你將會進入各個地方並等待直到你被調用。

有兩個主要的地方你會把你的啓動「東西」。首先是故事板或主要的筆尖文件(故事板是iOS 5中的新功能)。您在主筆尖文件(或故事板)中創建的任何對象將在程序啓動時自動創建。然後,他們可以回覆諸如awakeFromNibviewDidLoad等方法。

另一個主要的地方是關閉應用程序代理。這不是所有程序的主頁,但它通常是第一個運行的「你的」代碼。特別是,您想要將啓動代碼添加到applicationDidFinishLaunching:withOptions:

在你走之前,我建議你花一些時間在iOS Starting Point文件。如果你想略過一點,你可以去iOS App Programming Guide。 (我假設你是在問iOS,因爲現在大多數人都這麼做,如果你想要Mac,它非常相似,從Your First Mac App開始)

一旦你對某些東西有感覺,蘋果的文檔就會變得非常好是。而可可是非常一致的(同樣,一旦你對的一致性有所瞭解)。請務必閱讀標有「編程指南」的文檔,而不僅僅是參考文檔。並且,當您閱讀參考文檔時,請務必閱讀頂部的段落。如果你只是跳到所有的方法解釋,你會跳過大部分有用的信息。

+0

謝謝。除了一件事外,這回答了一切。我會將應用程序委託中的成員函數調用嗎?如果不是,我會在哪裏向成員函數發送調用? – fdh

+1

這很大程度上取決於你指的是哪種方法(ObjC從不稱它們爲「成員函數」)。關鍵是有一個你無法控制的事件循環。當各種事件發生時它會調用你的委託方法。所以通常在應用程序委託中的一個對象上調用方法'init'。但是大部分時間你都會被系統調用(再次,就像在.NET中一樣)。 –

+0

完美,謝謝。 – fdh

1

通常,您的項目中有一個main.m文件。

默認一個由Xcode中的iOS應用中產生:

int main(int argc, char *argv[]) 
{ 
    @autoreleasepool { 
     return UIApplicationMain(argc, argv, nil, NSStringFromClass([MPAppDelegate class])); 
    } 
} 
+0

對不起,我的意思是說我正在談論使用Objective C與Cocoa,而不是控制檯應用程序。 – fdh

+2

無論是GUI應用程序還是控制檯應用程序,第一個入口點確實都在main()中。 –

相關問題