Calling Methods :

為了更快的開始Objective-C  先學會呼叫Object method 的方式,

最基本的呼叫語法如下:

   1: [object method];
   2: [object methodWithInput:input];

 

呼叫Object method後也能接受他的回傳值 :

   1: output = [object method];
   2: output = [object methodWithInput:input];

 

回傳值也能是一個object , 你可以呼叫 Class 中的method , 下面的例子就是 我們呼叫

NSString class 中的 string method, 當呼叫這個 method 時他會回傳一個 NSString 的 object

   1: id myObject = [NSString string];

在Objective-C 中 id 是比較特別的 type  , 他可以被視為任何一種型態 , 所以當你不知道回傳是什麼型態時就使用 id 來 refer 他 , 但 id 只能用在 class 的呼叫回傳當中

 

我們也可以先指定好回傳的形態 :

   1: NSString* myString = [NSString string];

當您知道回傳的形態時 就可以這樣寫, 不過回傳的形態 和你指定的不符合時 , 他就會有警告訊息產生

P.S. 在 NSString 右邊有個 * 號 , 在 objective-C當中 所有的 object 都是一種指標型態 所以需要加上 * , 而 id 這個形態 本身就已經先被定義成指標了 , 所以用 id 在接收時並不需要加上 *

 

Nested Messages 

在很多的程式語言當中, 巢狀的method 或 function 都像以下的方式呼叫 :

   1: function1( function2() );

function2 的回傳值傳給 function1 , 在 objective-C , 這種巢狀寫法是 :

   1: [NSString stringWithFormat:[prefs format]];

盡量必免 2 個以上的 method 呼叫 在同一行當中, 這樣會比較方便閱讀 :D.

 

Multi-Input Methods

在NSString 中 writeToFile 的 method 需要傳入2 個參數

   1: -(BOOL)writeToFile:(NSString *)path automically:(BOOL)useAuxiliaryFile;

我們在使用時呼叫的方式:

   1: NSString *myData = @"HELLO WORLD!";
   2: BOOL result = [myData writeToFile:@"/tmp/log.txt" atomically:NO];

先宣告一個 NSString 的 myData 並傳文字進去 ,  writeToFile 和 atomically 不只是參數的名稱 , 在程式執行時 這個 method 的 name 其實是 writeToFile:atomically: 

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