15

(我是可可初学者,并且)我想知道为什么我们应该这样做:

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

而不是这样的:

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

3 回答 3

19

我同意当你刚开始时这很令人困惑。主要原因是 NSLog 方法和 Core Foundation 中的许多其他方法一样,是基于 C 的 API,而不是 Objective-C API。C 风格的函数看起来像这样myFunction(myParameter1, myParameter2)

您可能习惯于 [UIView presentModalViewController:] 等的所有 GUI 内容都基于一个 Objective-C API,带有您在函数中看到的方括号(在 Obj-C 中称为选择器)。Objective-C 语言位于 C 之上,因此您会在大多数应用程序中找到这两种风格。

于 2012-06-25T13:51:34.877 回答
6

据我了解,NSLog 不是一个 Objective C 函数,而是一个内置于 Cocoa 基础中的 C 函数。因此,它符合带有可变参数的基本 C 函数。

于 2012-06-25T13:50:32.353 回答
6

NSLog可能看起来像一个类,但它不是。

NSLog是一个FoundationKit将调试语句打印到控制台的函数。它定义在NSObjCRuntime.h

void NSLog(NSString format, ...);

这里有大量信息:http: //cocoadev.com/wiki/NSLog

编辑:正如@fyngyrz 指出的那样,该页面已死。所以这是 2012 年页面的回程机器版本

于 2012-06-25T13:53:43.837 回答