Я столкнулся с проблемой Objective C, которая, кажется, не имеет смысла мне. Я - относительно сведущий программист ObjC и понимаю целое понятие "предописания", но у этого есть я царапающий мою голову. Таким образом, вот соглашение:
ClassA является классом в моем проекте XCode, который только для проекта. ClassB является подклассом ClassA, который общедоступен и импортируется в заголовок моей платформы.
Я добираюсь, "Не может найти объявление интерфейса для 'ClassA', суперкласса 'ClassB'..." ошибка при создании. Я уже поместил @class ClassA;
предописание в ClassB.h, но это, кажется, не решает проблему. Когда я изменяюсь @class ClassA;
кому: #import ClassA.h
, это хорошо работает. Однако, так как ClassA только для проекта, зависимые проекты не могут создать ClassB, потому что он не может получить доступ к источнику ClassA.
Любая справка ценилась бы, и я надеюсь, что это имеет смысл.Спасибо!
Чтобы подклассифицировать класс, компилятору должно быть доступно полное объявление суперкласса. @class
просто позволяет ссылаться на экземпляры указанного класса -- позволяет A *foo;
.
Подклассирование требует больше метаданных (по крайней мере, в устаревшей среде исполнения - я думаю, что можно было бы поддерживать подклассирование без полного @интерфейса суперкласса. Технически это возможно, но, вероятно, не полезно)
.