0
此代碼SIGABRT崩潰:從NSOpenPanel讀的URL會導致崩潰與SIGABRT
NSOpenPanel *openPanel = [NSOpenPanel openPanel];
[openPanel runModalForTypes:nil];
NSArray* URLs = [openPanel URLs];
for (NSString* item in URLs)
{
NSLog(item); // here it crashes with SIGABRT
}
我沒有看到任何錯誤的代碼,但我在Objective-C的初學者。
是的,這似乎是問題所在。我可能會使用'NSLog(@「%@」,[url path]);'。 –
@enchilada感謝您的回答,我的代碼現在非常棒!但是來自C++我會期望在這種情況下編譯錯誤,在objective-c中沒有指針類型檢查嗎? – sashoalm
當然,有指針式檢查。你最初並沒有得到一個編譯時警告,因爲NSLog確實期望一個字符串,並且你之前編寫了「NSString * item」,所以你沒有得到任何警告。雖然你應該已經收到了「NSURL * url」的警告。但我認爲,在這兩種情況下,當您直接將對象傳遞到NSLog時,您應該會收到某種警告。我似乎記得看到過這樣的警告。也許它取決於編譯器設置。 – Enchilada