2010-01-16 241 views
1

這裏是我的代碼:非常基本的Objective-C/C問題

#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,但我不知道如何解決它。

有人可以幫我嗎?謝謝!

回答

8

路徑不是NSString,這就是爲什麼崩潰。格式化字符串中的%@需要一個對象,並要求它爲描述獲取要打印的字符串......因爲您使用的是C風格的字符串,所以您需要使用標準的C字符串格式化程序或將const char *使用NSString的initWithCString:encoding:class方法將其轉換爲NSString。

有一個const char *入住,您可以使用:

NSLog(@"My home folder is at '%s'", path); 

這會工作。

+0

我認爲這是正確的,你不能傳遞一個char *給帶有一個NSString的方法。雖然有一些方法可以將char *轉換爲NSString。 – 2010-01-16 03:56:22

+0

我剛加入我的迴應... – 2010-01-16 03:57:40