在objective-c中,当我创建一个新项目时,我得到了主要内容:
NSLog(@"Hello, World!");
我在基金会图书馆找不到任何其他简单的写作方法
NSLog
是目标c的printf
吗?是否建议在生产中使用它在屏幕上打印(命令行工具)?
如果没有,我如何使用Foundation库打印到屏幕?
编辑:
看起来NSLog
也增加了时间戳和事物,我认为这只是Xcode控制台
如何使用NSLog
之类的格式打印目标c对象而没有时间戳?
答案 0 :(得分:3)
Objective C是C的超集,因此您仍然可以使用printf
,scanf
等NSLog
打印时间戳和一些进程信息,并显示在系统控制台中。 NSLog
也知道如何打印Obj-C对象(使用%@
格式说明符)。
答案 1 :(得分:2)
如果你愿意,你可以做我通常做的事情:定义我自己的打印功能,同样有效,减去时间戳:
void IFPrint (NSString *format, ...) {
if (!format) return;
va_list arguments;
va_start(arguments, format);
fputs([[[[NSString alloc] initWithFormat:format arguments:arguments] autorelease] UTF8String], stdout); // Omit autorelease call if using ARC.
va_end(arguments);
}
这种方法的工作方式是它使用NSString
的文本解析(确切地说是如何使用%@
通过NSLog
打印对象),并将其非常简单地打印到屏幕上。它比NSLog
快,并且不通过系统日志服务。
答案 2 :(得分:0)
您可以使用printf。如果要打印NSLog
和其他Objective-C对象,NSStrings
会很方便。
答案 3 :(得分:0)
NSLog用于将调试跟踪写入控制台。 Objective-c并不是真正适合开发基于控制台的应用程序,所以如果这是你想要的,我会查看底层的C库并使用printf
和scanf
,或者像这样:
Objective-C Command Line Framework
关于如何在没有NSLog的时间戳信息的情况下打印出对象的描述,我会使用printf来打印[[myObject description] UTF8String]
的输出,因为我认为当你使用打印出对象时NSLog会使用它。 %@格式说明符。