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

shenfive 發表在 痞客邦 留言(0) 人氣()

螢幕快照 2012-11-05 下午11.18.40
@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) 人氣()

1 2
Blog Stats
⚠️

成人內容提醒

本部落格內容僅限年滿十八歲者瀏覽。
若您未滿十八歲,請立即離開。

已滿十八歲者,亦請勿將內容提供給未成年人士。