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: