2014-09-04 41 views
-2

在iOS/Objective-C中,我想知道以2種不同的方式調用某些類常量的區別。iOS - 調用[UIColor redColor]與UIColor.redColor

基本上,[UIColor redColor]UIColor.redColor有什麼區別?我發現幾乎所有的教程都用括號來寫,但是從我的測試來看,沒有任何差別。這適用於許多其他類似的情況,如:

NSNotificationCenter.defaultCenter,Object.class等。有沒有任何理由使用括號或我可以保持標準和使用點(。)?

另外,你會如何定義一個類變量?如果我有一個名爲BestClass的類,我怎樣才能創建一個變量,例如BestClass.coolColor,它將返回一個UIColor(與調用UIColor.redColor返回UIColor對象的方法相同)?

+0

可能重複的[這是什麼點語法和方括號語法之間的差異?](HTTP:/ /stackoverflow.com/questions/7423853/whats-the-difference-between-dot-syntax-and-square-bra cket語法) – 2014-09-04 11:45:13

回答

0

點語法用於調用屬性的setter/getter方法(使用@property語句定義),給定的屬性在實例級定義,而不是級別級,[ClassName methodName]的形式更好。

但它只是語法糖,所以兩者都可以工作。

類方法使用+定義:

@interface MyClass : NSObject 

+ (int)aClassMethod; 

@end 
0

這是相同的。 您調用屬性的訪問器方法的默認方式是括號表示法,這裏的點符號只是執行相同操作的簡短方法。

從OBJ - C的節目指南:

點語法純粹是圍繞 調用存取方法一個方便的包裝。當您使用點語法,房地產仍然是訪問或 使用上述的getter和setter方法改變:

獲取使用somePerson.firstName的值是一樣的使用 [somePerson名字]

設置一個值使用somePerson.firstName = @「約翰尼」是與使用[somePerson setFirstName:@「約翰尼」]的