關於方法前的 + - 符號 MyClass.alloc().init(foo.bar()).autorelease(); ...
關於方法前的 + - 符號
前置加號(+)的方法為類方法,這類方法是可以直接用類名來調用的,它的作用主要是創建一個實例。相當於是靜態的方法。
前置減號(-)的方法為實例方法,必須使用類的實例才可以調用的。
而要把成員變數聲明為靜態的,必須使用static關鍵字
關於Ob-c的函數的參數問題
Object-c的一個方法可以包含多個參數,除了第一個參數外,後面的所有參數都要寫名字。
多個參數的寫法
(方法的數據類型) 函數名: (參數1數據類型) 參數1的數值的名字 參數2的名字: (參數2數據類型) 參數2值的名字 …. ;
舉個例子,一個方法的定義:
-(void) setKids: (NSString *)myOldestKidName secondKid: (NSString *) mySecondOldestKidName thirdKid: (NSString *) myThirdOldestKidName;
實現這個函數的時候:
-(void) setKids: (NSString *)myOldestKidName secondKid: (NSString *) mySecondOldestKidName thirdKid: (NSString *) myThirdOldestKidName{
大兒子 = myOldestKidName;
二兒子 = mySecondOldestKidName;
三兒子 = myThirdOldestKidName;
}
調用的時候:
Kids *myKids = [[Kids alloc] init];
[myKids setKids: @”張大力” secondKid: @”張二力” thirdKid: @”張小力”];
而如果你用c#寫這個方法,大致的寫法可能是
public void setKids( string myOldestKidName, string mySecondOldestKidName, string myThirdOldestKidName)
{
…
}
調用的時候大概的寫法可能是:
Kids myKids = new Kids();
myKids.setKids (“張大力”, “張二力”, “張小力”);
明白了吧?其實不怎麼難看懂。
基本上,如果你能瞭解下麵這段代碼的轉換關係,你Objective-C的語法也就懂了八成了:
[[[MyClass alloc] init:[foo bar]] autorelease];
轉換成C#或者Java的語法也就是:
MyClass.alloc().init(foo.bar()).autorelease();