Xcode - 带子项目的自定义类

时间:2013-12-10 09:10:12

标签: objective-c xcode interface-builder

我在另一个项目B中有一个项目A.在项目A中,我有我的程序的“核心”,在项目B中我做了自定义的事情。我在项目A中创建了一些空的自定义类,以便我可以在项目B中对它们进行挖掘。

例如......在项目A中,我有所有方法的Square.h类和一个Square的子类SquareCustom.h。然后我有一个类Shapes.h,其中包括SquareCustom。

在Project B中我导入了Square.h和Shapes.h,但是我用自定义方法编写了一个新的SquareCustom.h。我这样做是因为我可以保持与项目所在的SquareCustom.h相同的Shape.h。

我现在的问题是,当我在Project B上使用SquareCustom.xib时,Xcode会变得有些混乱。当我编译时,SquareCustom.xib文件所有者是来自Project B的正确SquareCustom,但是在Interface Builder中如果我按下Identity Inspector中“Custom class”附近的箭头,它指向错误的(项目A中的整个) 。这真的很烦人,因为我在使用助理编辑器时总是需要手动选择它。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

因此,如果我理解正确,您有2个SquareCustom类,一个在项目A中,另一个在项目B中?

这是一个类名碰撞,应该像地狱一样避免。这就是Apple recommends prefixing class names with uppercase letters的原因。你不应该故意创造一个。

这是你的问题。考虑到它是空的,在项目A中有SquareCustom是什么意思?

为我做这件事的合理方法是在项目A中使用Square,然后在项目B中创建CustomSquare作为Square的子类(来自项目A)。这似乎是一个干净的设计(项目A充当外部图书馆不知道它的消费者,你不重复类名称),它实现了我理解你想做的事情。考虑到现在只有一个{IB},IB对于使用哪个CustomSquare会更加困惑。