2010-01-27 75 views
2

我只是Objective-C的初學者,它的語法只是讓我一頭霧水。與main()相當的Objective-C是什麼?

我'試着'在iphone 3.0上工作。

截至知道我已經瞭解到:

  1. 有它包含 聲明每類.h文件中;就像我們 在C++中,我們可以聲明變量/ data_fields 的 名稱,以後再定義外
  2. *的 功能/方法的功能/方法在一個.m文件中聲明,以便爲每個類 會有是.h文件,.m文件 和a.xib文件

那麼我們如何調用我們選擇的函數/方法呢?我們有一個main()函數來完成我們的控制工作,但是在Obj-c中,它的main()函數等價於什麼?

我知道還有一個main()函數,但我幾乎不知道它是如何工作的。

+0

問:「什麼是相當於計算器粗魯()?」 A.不讚賞其他人的時間並且不將問題標記爲已回答的人。 – 2012-05-03 07:05:54

回答

10

主要功能啓動主程序事件循環,一般你不會碰它。

AppDelegate是你想要放置自己的用戶代碼的地方。如果你生成一個名爲Sample的示例iphone項目,你將生成一個名爲SampleAppDelegate的類,它有一個名爲- (void)applicationDidFinishLaunching:(UIApplication *)application的方法,這是我認爲你正在尋找的入口點。

SampleAppDelegate類從UIApplicationDelegateProtocol實現委託(如c#中的接口),其中一些方法是可選的applicationDidFinishLaunching不是。這通常是您設置第一個視圖控制器來執行初始屏幕的地方。

調用方法是通過消息傳遞完成的。如果我有一個類湯姆的方法印刷,我將初始化並調用方法,以便

Tom *tom = [[Tom alloc]init]; 
[tom print]; 

哦,不,在哪裏我的方法arguemts去了?沒有括號,我感到迷茫。

,如果我有一個打印頁碼和返回void的方法,我可能把它定義爲這樣

-(void)printPageNumbers:(int)pageNumber{ 
} 

,並調用它

Tom *tom = [[Tom alloc]init]; 
[tom printPageNumbers:2]; 

多個參數

-(void)printPageNumbersFrom:(int)fromPageNumber toPageNumber:(int)toPageNumber{ 
} 

並稱之爲

Tom *tom = [[Tom alloc]init]; 
[tom printPageNumbersFrom:2 toPageNumber:5]; 

它不是一個很類型安全的語言,你可以做一些時髦的東西一樣,如果你有湯姆對象的數組,你可以只發送一條消息其中之一。如果在運行時發現數組中的對象不是Tom,你會得到一個異常。

[[myArray objectAtIndex:0] printPageNumbersFrom:2 toPageNumber:5]; 

以上「所以對每個類別都會有.h文件.m文件的.xib文件」一些評論 - 這是不正確。每個班級都有'.h'和'.m'。

A「的.xib」是一個視圖文件,如果你的類沒有UI元素,它不會有一個「的.xib」。被稱爲nib文件的'.xib'不是類的一部分,它只是指它。 (您鏈接兩個)

我發現學習曲線相當陡峭的。如果你有C和一些OO的支持,Objective-C並不是一門硬性語言。然而,把它與用戶界面放在一起可能會有點痛苦。斯坦福UNI有一個在線課程,他們已經通過iTunes U專區香港專業教育學院分佈看着他們,他們都值得的時候,看到here

享受曲線,我很高興我不是坐在你在哪裏:)

+1

+1好工作阿蘭! – Fredrik 2010-01-27 07:03:25

1

我認爲iPhone的發展提出了程序員的兩個挑戰在其他語言/ API的經歷:

    當你是一個初學者,它有時是非常有幫助的,通過有系統無論世事工作
  1. 的API做這麼多的你,這是很難得到的程序實際上是如何構成的把握。人們過去常常從頭開始啓動應用程序,期望不得不做更多的工作才能啓動應用程序。
  2. 接口 - 建造/筆尖技術隱藏了許多複雜的是有經驗的程序員來處理。看來,控制器等似乎只是從無處不在地跳出來進入課堂。

因此,有經驗的程序員總覺得他們錯過了學習API的一些東西,因爲他們期望隱藏的複雜性。