Objective C 快速入門詩
C沒有類 這讓人很疲憊 對象的說法很時髦 不就是繼承封裝組合人人會 右走是C++,這個大眾都熟悉它 左走就是objective-c,躲在僻靜僻靜的麥金塔 本是同根生的C 如何高舉面向對象的大旗 求同存異標新立異且聽一一細分清 對象的C 是不同的C 類的處理與眾不同重點要區分 不重復是我的口頭禪 任何時候我只說一次告訴你我的地盤 [@begincommand] | @end就是我的指示 @interface classname 聲明類 @implementation classname 實現類 @protocol interfacename 聲明接口 就是這么簡單,你的一定要明白 我先聲明對成員變量和方法的關系有遠近 成員變量大大括在我的懷 關系遠近 public / protected / private 來區分 若不聲明全默默受著保護 靜態成員變量請不要放在此 成員方法我不太愛 前面拴著繩子置于類的變量列表外 減號就是普通函數 加號就是靜態函數莫怪 函數的聲明有點怪 我要一眼叫出名,包括函數名和參數名 其余的類型括起來,我有空再來慢慢看 函數名和參數名之間用:分隔開 多個參數的函數那就是更怪 逗號其實不是我的愛 后續的每個參數分隔用空白 每個參數形式如 標簽:(參數類型)參數名 其實只要把函數名看作是第一個參數標簽 你就能領悟其中的奧妙并在調用時喜愛 成員方法太多我才懶得區分親疏遠近 它們一律都是公之于眾要好好的干活 誰若不服膽敢出頭犯上 就踢出頭文件打入冷宮永世不能露面試試看 所有的成員方法都是虛函數 改則重載,不改就繼承 不用任何標記請放心大膽隨便使用 對象的類,在繼承層次上考慮才顯得重要 所有的類最終都繼承于NSObject 因為它給你創建自己生命的方法 不繼承于NSObject的只能是接口protocol 它沒有成員變量只有方法 它只有聲明不用實現 這點和java很相似 當然類還有一些絕活可以讓你開開眼 可以動態的擴充一個類 而不總是用繼承 @interface CClassA(Category)|@end @implementation CClassA (Category)|@end 源代碼外包含該 類的頭文件 就可以使用該Category中的方法 也可以動態的替換一個類 但是只限于用繼承類來替換基類功能 [CInheritClass poseAsClass: [CBaseClass class]]; 聲明之后用基類創建的對象實際上行為都是繼承類 所以一個類的完整聲明如下: @interface CClassA(Category): CBaseClass<IA,IB...> 類別,基類,接口一一具全 加上靜態 虛函數 所有特性和C++均可對應 再加上所獨有的特性 這一特性編譯類語言很少有 設計得當完全可以實現動態調用dll切換功能 類的定義和使用,也有點怪 想想看一個對象的生命周期,該是如何辦 創建很是別扭 這樣就定義了一個類對象, CClassName* pA = [[CClassName alloc] init]; 能且只能返回對象指針 釋放分為兩種 自動釋放聲明后 [pA autorelease]; 以后可以不管 否則就必須配對 [pA release]; 注意類的構造函數init可以捕獲 但是析構函數卻沒有這點很讓人意外 使用類也有多種情況 調用成員方法用中括號 int nRtn = [pA method:param1]; 而靜態成員方法不需要對象 int nRtn = [CClassName method]; 調用成員變量還是C格式 pA->m_nCount = 1; 所有的類,都可以對應一個id類型 用來引用一個對象 id cur = sq; 或者用來引用一個對象指定的接口 id<IA> cur = sq; 然后就可以調用該對象的方法和指定接口方法
Iphone APP程序結構