0

私はXcodeでID3フレームワークを使用しています(これはその後、Googleキャッシュを含めてWebの表面から消えました!)。

インポート時にタグを編集できるmp3インポート機能をテストしています。テストケースの1つは、適切なid3ヘッダーのない破損または無効なmp3です。私が抱えている問題は、無効な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");
    }
}
4

2 に答える 2

2

発生するエラーは、Xcodeがデバッグ中に表示するためにソースファイルid3V1Tag.mを見つけようとしていることです。あなたが書いたコードはこれに影響を与えません。

フレームワークディストリビューションにid3V1Tag.mソースファイルがない場合、これについてできることは何もありません。無視する以外に何もすることはありません(設定しないなど、要求されるのを避けることができるかどうかを確認する以外は)その中のブレークポイント、それに足を踏み入れたり、クラッシュしたりしない)。

あなたがそれを持っていて、それを構築しているなら、おそらくあなたは正しいデバッグ情報で構築していないので、あなたはあなたの構築設定についてもっと教えなければならないでしょう。

于 2010-03-13T00:43:34.680 に答える
0

したがって、発生している問題は、id3V1Tag.mをコンパイルしようとしたとき、またはプログラムの実行中にプログラムがクラッシュすることです。私はそれについて少し混乱しています。

実行中にクラッシュする場合、これはライブラリにコードファイルがないという問題ですか?ID3タグ情報を正確にどのように読んでいますか?それはあなた自身のコードを通してですか、それともサードパーティのライブラリ/クラスを通してですか。

于 2010-03-12T14:48:46.887 に答える