我正在使用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