我正在使用Xcode中的ID3框架(它已經消失在網絡面前 - 包括谷歌緩存!)。我該如何解決「Xcode無法找到源文件」
我測試了一個導入mp3功能,允許他們在導入標籤時對其進行編輯。其中一個測試用例是一個損壞或無效的mp3,沒有正確的id3頭文件。我遇到的問題是,當更新無效mp3(updateFile:
)的標籤時,ID3框架嘗試使用id3V1Tag.m
(我認爲如果找不到v2標籤,它會回落到這個位置),這就是我得到的Xcode錯誤(同時運行的程序,而不是建):
Xcode could not locate source file: id3V1Tag.m (line: 299)
即使在發佈版本這個崩潰的程序,所以它不是我真的可以忽略不計。
我試着把一個try/catch塊放在它的周圍,但它不被視爲一個異常,所以不會被捕獲。爲文件加載標籤數據的函數返回一個BOOL,但是如果給定的文件不存在,它只會返回false,所以這也沒有幫助。
當前代碼:
[tagData release];
tagData = [[TagAPI alloc] initWithGenreList:nil];
tagsLoaded = [tagData examineFile:exportPath];
if(tagsLoaded) {
[tagData setTitle:title];
[tagData setArtist:artist];
[tagData setComments:comments];
@try {
[tagData updateFile];
}
@catch (id e){
NSLog(@"h");
}
}
澄清:該應用程序已經崩潰。當Xcode嘗試幫助您調試崩潰時,會出現該消息;它來自Xcode,而不是ID3框架(它不是Xcode的一部分,也沒有Xcode Tools),並且不是崩潰的原因。 – 2010-03-13 23:40:13
我沒有這個文件,所以沒有很多我可以在那裏做。該方法似乎將自己調用缺少的文件,並且是我可以在框架中看到的將保存標籤的唯一方法,所以我不能逃避不調用它。我很想忽略它,但它會使程序崩潰,所以我不能。如果try/catch發現崩潰就沒事了,顯然它不會,因爲它不是一個例外,但是沒有其他方法可以模擬try/catch行爲(我不在乎崩潰/錯誤的細節) ? – Septih 2010-03-15 13:25:07
這不是調用缺少文件的*方法*。代碼崩潰了。 Xcode試圖通過向您顯示崩潰方法的源代碼來幫助您,但您沒有它 - 這基本上就是警告所說的。 這裏的主要問題是您的代碼導致框架崩潰。關於丟失文件的警告只是一種後果;你應該專注於消除碰撞本身。 – cdespinosa 2010-03-16 17:15:46