这是我的代码:
#import <Foundation/Foundation.h>
void PrintPathInfo() {
const char *path = [@"~" fileSystemRepresentation];
NSLog(@"My home folder is at '%@'", path);
}
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
PrintPathInfo();
[pool drain];
return 0;
}
这是我的问题: 程序接收信号:“EXC_BAD_ACCESS”。
我真的认为问题是我的NSLog,但我不知道如何解决它。
有人可以帮帮我吗?谢谢!答案 0 :(得分:8)
路径不是NSString,这就是崩溃的原因。格式化字符串中的%@需要一个对象,并要求其描述以获取要打印的字符串...因为您使用的是C样式字符串,您需要使用标准C字符串格式化程序或将const char *转换回来使用NSString的initWithCString:encoding:class方法创建NSString。
使用const char *,您可以使用:
NSLog(@"My home folder is at '%s'", path);
哪个会奏效。
答案 1 :(得分:6)
%@用于对象。 (像NSString)。对于const char *,您将需要c的printf格式代码中的旧的%s。
格式指定及其含义