2010-03-12 40 views
0

我正在使用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"); 
    } 
} 

回答

2

你得到的錯誤是Xcode試圖找到你的源文件id3V1Tag.m,以便在調試過程中顯示它。沒有你寫的代碼會影響這個。

如果您的框架發行版中沒有id3V1Tag.m源文件,那麼您無法對此做任何事情,並且除了忽略它之外沒有什麼可做的(除了看看是否可以避免導致它被請求,就像不在其中設置斷點一樣,不會進入它,也不會崩潰)。

如果你確實擁有它,並且正在構建它,那麼也許你沒有建立正確的調試信息,所以你必須告訴我們更多關於你的構建設置。

+0

澄清:該應用程序已經崩潰。當Xcode嘗試幫助您調試崩潰時,會出現該消息;它來自Xcode,而不是ID3框架(它不是Xcode的一部分,也沒有Xcode Tools),並且不是崩潰的原因。 – 2010-03-13 23:40:13

+0

我沒有這個文件,所以沒有很多我可以在那裏做。該方法似乎將自己調用缺少的文件,並且是我可以在框架中看到的將保存標籤的唯一方法,所以我不能逃避不調用它。我很想忽略它,但它會使程序崩潰,所以我不能。如果try/catch發現崩潰就沒事了,顯然它不會,因爲它不是一個例外,但是沒有其他方法可以模擬try/catch行爲(我不在乎崩潰/錯誤的細節) ? – Septih 2010-03-15 13:25:07

+0

這不是調用缺少文件的*方法*。代碼崩潰了。 Xcode試圖通過向您顯示崩潰方法的源代碼來幫助您,但您沒有它 - 這基本上就是警告所說的。 這裏的主要問題是您的代碼導致框架崩潰。關於丟失文件的警告只是一種後果;你應該專注於消除碰撞本身。 – cdespinosa 2010-03-16 17:15:46

0

所以你遇到的問題是,當你嘗試編譯id3V1Tag.m或運行程序時,程序發生崩潰。我對此有點困惑。

如果它在運行時崩潰也許這是從庫中缺少代碼文件的問題?你如何準確讀取ID3標籤信息?它是通過你自己的代碼還是通過第三方庫/類來實現的。

+0

它在程序運行期間崩潰,特別是在調用updateFile時:。 ID3標籤是通過第三方庫讀取的,我認爲它缺少這個文件,因爲我自從下載它們以後就沒有碰過這些文件。 – Septih 2010-03-13 09:57:07

+0

這是有道理的。奇怪的是我在週末遇到了這個完全相同的錯誤。如果我記得正確的話,問題就像你所說的那樣。實施文件丟失。你的項目中是否有一個名爲「id3V1Tag.m」的文件?如果它已經包含在內,你可能想嘗試從你的項目中刪除它並重新添加它。 – 2010-03-15 14:00:19

+0

對,我做了一次聚光燈搜索,並在原始下載中找到了.m文件,因此將其添加到框架中,發現它拋出了一個錯誤的訪問異常(儘管這不會觸發我原來的代碼中的catch)。我給函數添加了斷點,但沒有打到它們。刪除它並重新添加它並沒有什麼區別。 – Septih 2010-03-16 09:47:02

相關問題