iOS-调用[UIColor redColor]vs UIColor.redColor

iOS-调用[UIColor redColor]vs UIColor.redColor,ios,objective-c,Ios,Objective C,在iOS/Objective-C中,我想知道以两种不同的方式调用某些类常量有什么区别 基本上,[UIColor redColor]和UIColor.redColor之间有什么区别?我看到几乎所有的教程都用括号写,但从我的测试来看,并没有任何区别。这适用于许多其他类似情况,例如: NSNotificationCenter.defaultCenter,Object.class等。是否有任何理由使用括号,或者我可以保留一个标准并使用点(.) 另外,您将如何定义这样的类变量?如果我有一个名为BestCl

在iOS/Objective-C中,我想知道以两种不同的方式调用某些类常量有什么区别

基本上,
[UIColor redColor]
UIColor.redColor
之间有什么区别?我看到几乎所有的教程都用括号写,但从我的测试来看,并没有任何区别。这适用于许多其他类似情况,例如:

NSNotificationCenter.defaultCenter
Object.class
等。是否有任何理由使用括号,或者我可以保留一个标准并使用点(.)


另外,您将如何定义这样的类变量?如果我有一个名为
BestClass
的类,我如何创建一个变量,例如
BestClass.coolColor
,它将返回UIColor(与调用
UIColor.redColor
返回UIColor对象的方式相同)?

点语法用于调用属性的setter/getter方法(使用
@property
语句定义)并且给定的属性是在实例级别定义的,而不是在类级别定义的,因此形式
[ClassName methodName]
更好

然而,这只是语法上的糖分,所以两者都能起作用

类方法是使用
+
定义的:

@interface MyClass : NSObject

+ (int)aClassMethod;

@end
都一样。 调用属性的访问器方法的默认方法是括号表示法,这里的点表示法只是一种简单的方法

从Obj-C编程指南:

点语法纯粹是一种方便的访问器包装方法 调用。使用点语法时,仍然可以访问或删除该属性 使用上述getter和setter方法进行更改:

使用somePerson.firstName获取值与使用 [某人的名字]

使用somePerson.firstName设置值= @“Johnny”与使用[somePerson setFirstName:@“Johnny”相同

可能重复的