Objective c 理解NSLog语法

Objective c 理解NSLog语法,objective-c,cocoa,nslog,Objective C,Cocoa,Nslog,(我是可可初学者)我想知道为什么我们应该这样做: NSLog(@"this is the variable value: %d",variable); 不是这样的: [NSLog outputThis:@"this is the variable value: %d" param:variable]; 正如我所理解的,NSLog不是一个客观的C函数,而是一个C函数,它建立在可可的基础上。因此,它符合具有可变参数的基本C函数。我同意,当您刚开始时,这是相当令人困惑的。主要原因是,NSLoT方法

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

NSLog(@"this is the variable value: %d",variable);
不是这样的:

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

正如我所理解的,NSLog不是一个客观的C函数,而是一个C函数,它建立在可可的基础上。因此,它符合具有可变参数的基本C函数。

我同意,当您刚开始时,这是相当令人困惑的。主要原因是,NSLoT方法与核心基础上的许多其他方法一样,是基于C的API,而不是Objy-C API。C风格的函数类似于myFunction(myParameter1,myParameter2)

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

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

NSLog
是一个
FoundationKit
函数,用于将调试语句打印到 安慰它在
NSObjCRuntime.h
中定义:

这里有大量的信息:


编辑:正如@fyngyrz所指出的,这一页已经死了。所以

因为第二条语句调用了
对象上的
输出this:param:
方法
NSLog
只是Cocoa框架中的一个函数。是的,但它可能是类NSLog的类方法,如[NSString stringWithString:@“this is a string”]?NSLog听起来不像类。NSLogger是更好的类名选择。现在这只是一个动作。因为第二个看起来很糟糕,我们应该为任何看起来更像C;)的动作感到庆幸苹果决定一切,我们会喜欢的,这是每个iOS开发者的故事。页面不见了。@fyngyrz Thanx。编辑了答案。
void NSLog(NSString format, ...);