“Не может найти ошибку объявления интерфейса …” после @class

Я столкнулся с проблемой Objective C, которая, кажется, не имеет смысла мне. Я - относительно сведущий программист ObjC и понимаю целое понятие "предописания", но у этого есть я царапающий мою голову. Таким образом, вот соглашение:

ClassA является классом в моем проекте XCode, который только для проекта. ClassB является подклассом ClassA, который общедоступен и импортируется в заголовок моей платформы.

Я добираюсь, "Не может найти объявление интерфейса для 'ClassA', суперкласса 'ClassB'..." ошибка при создании. Я уже поместил @class ClassA; предописание в ClassB.h, но это, кажется, не решает проблему. Когда я изменяюсь @class ClassA; кому: #import ClassA.h, это хорошо работает. Однако, так как ClassA только для проекта, зависимые проекты не могут создать ClassB, потому что он не может получить доступ к источнику ClassA.

Любая справка ценилась бы, и я надеюсь, что это имеет смысл.Спасибо!

12
задан BoltClock 7 August 2010 в 19:46
поделиться

1 ответ

Чтобы подклассифицировать класс, компилятору должно быть доступно полное объявление суперкласса. @class просто позволяет ссылаться на экземпляры указанного класса -- позволяет A *foo;.

Подклассирование требует больше метаданных (по крайней мере, в устаревшей среде исполнения - я думаю, что можно было бы поддерживать подклассирование без полного @интерфейса суперкласса. Технически это возможно, но, вероятно, не полезно)

.
10
ответ дан 2 December 2019 в 03:02
поделиться