Категории & сингелтон в какао - PullRequest
1 голос
/ 04 января 2011

У меня есть SingletonClass, который имеет только один экземпляр. Я хочу расширить его и добавить к нему категорию (MoreFeatures).

Я создал источник SingletonClass + MoreFeatures, интерфейс / реализация которого выглядит так:

@interface SingletonClass (MoreFeatures)

- (void) feature;

@end

@implementation SingletonClass (MoreFeatures)
- (void) feature
{
}
@end

Когда я создал свой SingletonClass, я последовал примеру Apple по реализации Singleton в какао.

Этот синглтон находится в проекте B, который является зависимостью от более крупного проекта A. Я могу вызвать [[SingletonClass sharedInstance] foo] из источника в проекте A, и он работает, если функция foo находится в интерфейсе / реализации SingletonClass. Когда я пытаюсь вызвать [[SingletonClass sharedInstance] feature] из источника в проекте A, я получаю сбой, который говорит, что для класса SingletonClass нет функции метода ...

Почему это происходит?

Большое спасибо,

Нав

РЕДАКТИРОВАТЬ: сбой происходит во время выполнения. Источник файла категории находится в проекте B вместе с SingletonClass

Ответы [ 2 ]

0 голосов
/ 05 января 2011

Вам нужно указать флаги компоновщика -all_load и -ObjC для вашего проекта.

Надеюсь, это поможет, Мози

0 голосов
/ 04 января 2011

Похоже, что реализация вашей категории не компилируется при сборке проекта A. Подобные вещи определенно возможны, Foundation / AppKit / UIKit интенсивно используют категории для разделения больших классов на несколько файлов.

Вы не даете понять, как ваш проект B включен в проект A. Если это фреймворк, разделяемая или статическая библиотека, то убедитесь, что файл вашей категории включен в фазу сборки проекта B «Скомпилировать источники». Если он включен в качестве исходного, убедитесь, что вы скомпилировали этот файл как часть сборки проекта А.

...