関連するオブジェクト (NSMutableDictionary および NSNumber) を使用して、iTunesTrack にカテゴリを書き込もうとしています。
#import "iTunes.h"
#import <objc/runtime.h>
@interface iTunesTrack (dictionary)
- (NSMutableDictionary*) getDictionary;
- (NSNumber*) getScan;
- (BOOL)scanTrack:(NSString *)equationString;
@end
これは失敗します:
Undefined symbols for architecture x86_64:
"_OBJC_CLASS_$_iTunesTrack", referenced from:
l_OBJC_$_CATEGORY_iTunesTrack_$_dictionary in iTunesTrack+dictionary.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Scripting Bridge フレームワークが追加されていることと、iTunesTrack+dictionary.m ファイルがターゲットに添付されていることを再確認しました。これは、カテゴリと Scripting Bridge を組み合わせる際のエラーでしょうか?
アップデート:
iTunesTrack を SBObject に置き換えると、これが機能します。理由はわかりませんが。
更新 2:
この問題は再現可能です:
- 新しいプロジェクトを作成
- Scripting Bridge Framework と iTunes.h ヘッダー ファイルを追加します。
- 任意の名前で iTunesTrack の新しいカテゴリを作成します
iTunesTrack+name.h
インポートを確認するiTunes.h
- 建てる
NSProxy と NSCache を使用して iTunesTrack オブジェクトを保存する方法について説明しているこのページを見つけました。これは、カテゴリを作成しようとするよりも優れた解決策でしょうか?