4

我需要帮助。这怎么行不通:

NSProcessInfo *process = [NSProcessInfo processInfo];
NSString *processName = [process processName];
int processId = [process processIdentifier];
NSString *processString = [NSString stringWithFormat:@"Process Name: @% Process ID: %f", processName, processId];
NSLog(processString);

但这确实:

NSLog(@"Process Name: %@ Process ID: %d", [[NSProcessInfo processInfo] processName], [[NSProcessInfo processInfo] processIdentifier]);
4

3 回答 3

14
  • %@:输出对象的字符串形式(包括NSString)。
  • %f: 输出一个浮点数 ( float)
  • %d: 输出一个整数 ( int)
  • %x:输出数字的十六进制形式

您的原件NSString:stringWithFormat:有两个问题:

  1. @%应该是%@输出一个NSString。
  2. 您使用%f而不是%d输出一个 int。
于 2009-06-29T12:12:52.903 回答
2

您的格式字符串不好: processId 是 int 而不是 float。

使用 -Wformat 摆脱这种错误。

于 2009-06-29T09:06:12.360 回答
0

您的格式包含错误,您已将@and交换%[NSString stringWithFormat:]. 它适用于日志,但不适用于字符串创建,因为格式%@不是@%.

于 2009-06-29T09:58:41.803 回答