Я пытаюсь написать категорию поверх iTunesTrack со связанными объектами (NSMutableDictionary и NSNumber)
#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. Будет ли это лучшим решением, чем пытаться создать категорию?