理解NSLog语法

16

(我是一个cocoa初学者)我想知道为什么我们要这样做:

NSLog(@"this is the variable value: %d",variable);

而不是像这样:

[NSLog outputThis:@"this is the variable value: %d" param:variable];

1
因为第二个语句在NSLog对象上调用了outputThis:param:方法。NSLog只是Cocoa框架中的一个函数。 - Eimantas
是的,但它本来可以是一个类方法,属于 NSLog 类,例如 [NSString stringWithString:@"this is a string"];? - tahir
NSLog听起来不像是一个类名,NSLogger会是更好的选择。现在它只是一个动作。 - Eimantas
4
因为第二个看起来很烂,我们应该感激任何更像C语言的东西。 - Dominic
3个回答

19

当你刚开始学习时,我认为这很容易令人困惑。主要原因是NSLog方法与Core Foundation中的许多其他方法一样,都是基于C的API而不是Objective-C API。C风格的函数写法如下:myFunction(myParameter1, myParameter2)

所有你可能已经习惯了的GUI相关内容,例如[UIView presentModalViewController:]等,都是基于Objective-C API构建的,使用了你所见过的函数方括号(在Obj-C中称为选择器)。Objective-C语言构建在C之上,因此你会发现大部分应用程序中都同时存在两种风格。


2
苹果决定一切,而我们会喜欢它。 - onmyway133
1
^ 是每个 iOS 开发者的故事 XD - Pranav Kasetti

7

1
不,没有了。该页面已经消失了。 - fyngyrz
@fyngyrz 谢谢。已编辑答案。 - Alladinian

6
据我了解,NSLog不是Objective C函数,而是内置在Cocoa基础库中的C函数。因此,它遵循具有可变参数的基本C函数规范。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接