在編寫物件導向的程式,都有類似的概念,就是對自已或父類別做為發送訊息(使用方法)的對像,在 Obj-C 中,用了兩個字來執行這個概念 self 與 super。
簡單的說:
self 就是自已,而 super 就是它的父類別
shenfive 發表在
痞客邦
留言(0)
人氣()

@literals 是 XCode 4.4.1 之後一種資料型態簡化的寫法
就如以往的 NSString 產生的方式,我們可以用 @““ 的方式來產生之外,NSNumber, NSDictionary, NSArray 都可以用類似的方式產生
先看一下 NSString 的寫法,要產生一個 NSString 我們可以這樣寫
shenfive 發表在
痞客邦
留言(0)
人氣()
在編寫物件導向的程式,都有類似的概念,就是對自已或父類別做為發送訊息(使用方法)的對像,在 Obj-C 中,用了兩個字來執行這個概念 self 與 super。
簡單的說:
self 就是自已,而 super 就是它的父類別
shenfive 發表在
痞客邦
留言(1)
人氣()
也許是因為 protocol 很難用文字讓人體會它的設計理念,很多文件都對它講的不是很清楚,但Protocol 協定與 Delegate 委託(也稱做代理或委派)是 Objective-C 中很重要的一部份。但對於初寫程式的人來說,這是物件導向中,最難理解與使用的一部份,大部份的人要實作數個月後,才能開始體會與實用。不論如何,先記住它的語法與使用法好了。
由於 Objective-C 只支援單繼承,對於繼承自不同父Class 的 Class 來說,如果需要有共同的方法名稱,就需要使用 Protocol,但 Protocol 本身並不會寫方法的實作,只會作方法的宣告。實作的部份,要 Class 自已來作。所以Protocol 的動作其實是非常簡單的。如果我們在 XCode 中新增一個 Protocol 也只會有一個 .h 檔不會有 .m 檔。
Protocol 的語法如下:
shenfive 發表在
痞客邦
留言(1)
人氣()
這而講的是物件導向的基本概念,而最重要的概念就是下面這幾個
【Class 類別】
【Instance Variable 實體變數】
shenfive 發表在
痞客邦
留言(0)
人氣()
有影片! 看Demo 先吧
Category 是對 Obj-C 類別延伸功能的一個語法,也就是在不修改原 Class 的前提下,對該 Class 增加新的 method。
shenfive 發表在
痞客邦
留言(0)
人氣()
當一個
子類別中有一個方法,名稱與父類別完全一樣時,子類別的方法會取代父類別的方法,這就叫方法的覆蓋 override。
以之前車子的例子來說,我們有一個父類別 Car 與子類別 TurboCar,在 Car 類別中,我們設一個方法叫加速 speedUp,每做一次,就加速 10,那我們可以這樣寫:
shenfive 發表在
痞客邦
留言(0)
人氣()
繼承 Inheritance 是物件導向中一個很重要的概念,而繼承的意義是建一個新類別來擴充或修訂原類別的功能。
在 Objective-C 中的根類別是 NSObject 類別,除了它以外,每一個類別,都必需有一個父類別。一個子類別,一定會有父類別的所有功能特性,包括實體變數與方法等。所以 alloc,init 等 方法,就可以用在每一個所有的類別與實體上。
shenfive 發表在
痞客邦
留言(0)
人氣()

建構子是用來初始化實體的工具,建構完成的實體才能開始正常使用。
在 Obj-C 中,一個實體通常要先經過 alloc,這是一個 class method ,用來生成實體。生成之後只是向作業系統要記憶體,但記憶體內的資料並未清除整理,所以還要經過 init 的過成程,init 就是用來整理記憶體,把其內容整理成的內容。一個典型的實體初始化範例如下:
shenfive 發表在
痞客邦
留言(0)
人氣()
@property 是 Obj-C 2.0 版中開始提供的一種功能,目的是要簡化一個實體變數設定的過程。如 setter 與 getter 小節所述,一個實體變數多半需要寫個數行的 setter 與 getter,但其使用的 Code 都是幾乎是固定模式的,於是所有東西都可以用一行 (XCode 4.3 之前為兩行) 指令來宣告。
使用 @property 宣告實體變數的語法是在類別的 @interface 區段,寫下
shenfive 發表在
痞客邦
留言(3)
人氣()
setter 和 getter 也是一種方法,主要的功能就是來存取實體變數。
習慣上,Obj-C 會以 變數名稱做為 getter 的方法名稱 (或【
get變數名稱】),如變數名稱叫 speed,那 getter 就會叫做 getSpeed。至於 setter 通常會叫【set
變數名稱:_變數名稱】, 如 setSpeed:_speed ,其中 _speed 為參數。為避免參數與實體變數混淆,所以用不同的名稱的參數。
shenfive 發表在
痞客邦
留言(0)
人氣()
方法 (Method) 是我們在 Class 中設計的動作,用來對 Class 與 Instance 能做的事情做詳細的描述。以之前的所談到的車子的案例來說,我們可以對 "車的工廠" (類別)設計一個動作叫 ”製造“ ,之後我們就可以製造車子了。但大多數人我們會 "車" 本身 (實體) 下指令,如加速等。
Objective-C 中,Method 的呼叫是用傳送訊息,而訊息的名稱,就叫選擇器 (Selector) 的方式完成的。
訊息傳送示意
(本圖來源:ISBN 957-527-624-8 Windows 程式設計...C++實作)
shenfive 發表在
痞客邦
留言(1)
人氣()