我对某种方法语法有疑问。
例如我知道这是做什么..
NSString *theString = [[NSString alloc]init...blablabla];
对类执行alloc(在本例中为NSString),并在类的实例上执行init。
如果我们有
[variable method];
我知道它的功能如何...方法是在“变量”
上执行的如果我有
variable = [instance method];
“方法”方法在实例上执行并存储在变量..
中但是我迷路的地方就是这样......
[[CCDirector sharedDirector]something:parameter];
我不确定在哪里采取行动......
答案 0 :(得分:5)
[CCDirector sharedDirector]
正在获取导演的单例实例。然后,您使用something
调用parameter
方法。这与此相似
CCDirector* director = [CCDirector sharedDirector];
[director something:parameter];
答案 1 :(得分:0)
括号在任何地方都是一样的。消息表达式[object arg0:value arg1:value ...]
将消息@selector(arg0:arg1:...)
发送到object
(它本身可以是消息表达式)。消息处理程序可以返回一个对象,因此消息表达式的值本身可以是另一个消息的接收者。嵌套这些表达式与嵌套函数调用相同:
something(CCDirector_sharedDirector(), parameter);
CCDirector_sharedDirector()
实际上并不存在;它只是用于比较。
请注意:
[[NSString alloc] init...]
并不是init
被发送到NSString实例(它不是,因为[NSString alloc]
实际上返回NSCFString),而是init
被发送到[NSString alloc]
的结果。
如果您发现难以阅读的嵌套邮件,可以将它们分成多行或使用temporary variables。
[[CCDirector sharedDirector]
something:parameter];
答案 2 :(得分:0)
[CCDirector sharedDirector]
是CCDirector
上的一个方法,并返回一些对象。很像[NSString alloc]
。该行的其余部分调用返回的对象上的方法。
答案 3 :(得分:0)
正如@hspain所指出的,它是一个用于表示单例实例的约定。实际的alloc / init发生,并且只在sharedDirector中发生一次。
Here is more information关于objective-c中的单例模式。