【问题标题】:Understanding NSLog syntax理解 NSLog 语法
【发布时间】:2012-06-25 13:39:02
【问题描述】:

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

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

不是这样的:

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

【问题讨论】:

  • 因为第二个语句在NSLog 对象上调用outputThis:param: 方法。 NSLog 只是 Cocoa 框架中的一个函数。
  • 是的,但它可能是类 NSLog 的类方法,例如 [NSString stringWithString:@"this is a string"]; ?
  • NSLog 不像类“听起来”。 NSLogger 将是类名的更好选择。现在它只是一个动作。
  • 因为第二个看起来很糟糕,我们应该为任何看起来更像 C 的东西感到幸运;)

标签: objective-c cocoa nslog


【解决方案1】:

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

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

【讨论】:

  • 苹果决定一切,我们会喜欢的
  • ^ 是每个 iOS 开发者的故事 XD
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    NSLog 可能看起来像一个类,但实际上不是。

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

    void NSLog(NSString format, ...);
    

    这里有很多信息:http://cocoadev.com/wiki/NSLog

    编辑:正如@fyngyrz 指出的那样,该页面已死。所以here is a wayback-machine version of the page from 2012

    【讨论】:

    • 不,没有。页面不见了。
    • @fyngyrz 感谢。编辑了答案。
    猜你喜欢
    • 1970-01-01
    • 2019-11-26
    • 2023-01-02
    • 2012-05-07
    • 2013-06-22
    • 2013-11-19
    • 1970-01-01
    • 1970-01-01
    • 2017-11-23
    相关资源
    最近更新 更多