Я только что столкнулся с той же ошибкой компоновщика. Методом проб и ошибок я обнаружил, что это потому, что я вызывал isKindOfClass. Я не уверен, почему это вызывает компоновщик для barf, но, надеюсь, эта информация поможет.
Рассматриваемый класс OrderItem является дочерним по отношению к NSManagedObject; другими словами, это автоматически сгенерированный класс сущности Core Data.
В частности, здесь была ошибка компоновщика:
"_OBJC_CLASS_$_OrderItem", referenced from:
objc-class-ref-to-OrderItem in libmyStaticLib.a(MyTableViewController.o)
ld: symbol(s) not found
collect2: ld returned 1 exit status
А вот и код обидчика:
- (void)handleButtonTapWithObject:(id)object
{
// This must be an OrderItem or else we don't want to touch it:
if ( NO == [object isKindOfClass:[OrderItem class]] ) // <-- OFFENDING CODE
{
NSLog(@"Object parameter is of unexpected type.");
return;
}
Мой обходной путь - просто пропустить тест, который гарантирует, что «объект» - это OrderItem. Код не так безопасен без этого теста, но ошибка компоновщика исчезла. Мне было бы любопытно узнать, правильно ли я делаю этот тест, и, возможно, есть лучший способ сделать это.