2013-12-10 4 views
1

У меня есть проект A в рамках другого проекта B. В проекте A у меня есть «ядро» моей программы и в проекте «В». Я настраиваю вещи. Я создал также некоторый пустой пользовательский класс в проекте А, чтобы я мог их обновить в Project B.Xcode - пользовательский класс с подпроектом

Например ... В проекте AI есть класс Square.h со всеми методами и пустой SquareCustom.h, который является подклассом Square. Тогда у меня есть класс Shapes.h, который включает SquareCustom.

В проекте B я импортирую Square.h и Shapes.h, но я пишу новый SquareCustom.h с моими собственными методами. Я делаю это, потому что я могу сохранить тот же Shape.h, что указывает на SquareCustom.h.

Моя проблема теперь в том, что когда я работаю над SquareCustom.xib на Project B Xcode, получается немного беспорядочно. Владельцы файлов SquareCustom.xib - это правильный SquareCustom из Project B, когда я компилирую, но в построителе интерфейса, если я нажимаю стрелку рядом с «Custom class» в Identity Inspector, он указывает на неправильную (весь из Project A) , Это очень раздражает, потому что я всегда должен выбирать его вручную, когда я работаю с помощником редактора.

Что я делаю неправильно?

ответ

1

Итак, если я правильно понял, у вас есть классы 2 SquareCustom, один в проекте A и другой в проекте B?

Это столкновение с именем класса, и его следует избегать как ад. Вот почему Apple recommends prefixing class names with uppercase letters. Вы не должны пытаться создать его специально.

Это ваша проблема. Какой смысл иметь SquareCustom в проекте? В любом случае, учитывая, что он пуст?

Логичным способом сделать это для меня будет Square в проекте A, а затем создать CustomSquare в проекте B в качестве подкласса Square (из проекта A). Кажется, это чистый дизайн (проект A, который действует как внешняя библиотека, не знает о своих потребителях, вы не дублируете имена классов), он достигает того, что я понимаю, вы хотите сделать. И IB будет меньше смущаться, о котором следует упомянуть CustomSquare, учитывая, что теперь будет только один.

+0

+1 для обозначения «Префикс». –

+0

Я понимаю, о чем вы говорите, но как мне сохранить уникальный «Shape.h», который указывает на «Square.h» в моем основном проекте и «SquareCustom.h» для пользовательского? Я сделал этот трюк для хранения заполнителя, который позволил мне создать уникальный «Shape.h» для обоих файлов. –

+0

Что ж, вы не сможете сделать это в проекте A, как вы догадались. Зачем вам нужен «Shape.h» в проекте A? Или зачем вам нужно «Shape.h» в первую очередь? Если вы сделали то, что я предлагаю, вы можете просто «#import» SquareCustom.h », и он будет включать в себя как« SquareCustom », так и« Square »(который является суперклассом). – Olotiar

Смежные вопросы