2011-05-06 51 views
1

创建框架时有什么办法可以创建“私人对象”吗? (也就是说,不会导出到外部的类)XCode 4框架 - 私人对象

我有一个问题,我的框架使用JSON库,当使用我的框架的项目尝试还包括JSON库时,它们会得到“符号已定义”错误。

谢谢!

  • Yoav。
+0

如果是相同的JSON库,不能包含您的框架的项目,只是不链接JSON框架? – 2011-05-06 21:51:11

回答

1

使用Objective-C,这是不可能的。有一些准则可以防止碰撞,例如,应该为其他人“隐藏”的成员使用前缀,并且成员变量通常还带有下划线前缀(Apple保留使用2个下划线的权利)。你使用哪个JSON框架?也许考虑SBJSON,如果你没有使用它,它使用前缀(SB)来防止碰撞。

从苹果公司的文档:

前缀是编程接口名称的重要组成部分。他们区分软件的功能领域。通常这个软件会被封装在一个框架中,或者与密切相关的框架(如Foundation和Application Kit的情况)一起打包。前缀可以防止由第三方开发人员定义的符号与Apple定义的符号(以及Apple自己的框架中的符号)之间的冲突。

前缀具有规定的格式。它由两个或者三个大写字母,并且不使用下划线或下面是一些例子 NS“子前缀”:基金会 NS:应用开发包 AB:通讯簿 IB:Interface Builder中

使用前缀命名时类,协议,函数,常量和typedef结构。命名方法时不要使用前缀;方法存在于由定义它们的类创建的名称空间中。另外,不要使用前缀如果你想坚持使用JSON库命名的结构

的领域,而“命名空间”是问题的原因,考虑增加一个前缀为您自己的班级。

+0

感谢您的回答。我使用SBJSON,但使用我的库的产品也是如此,这会导致冲突:)我将在y框架中更改前缀。 – user92301 2011-05-08 16:15:44

+0

您使用的其他产品包含SBJSON作为二进制文件的一部分?如果没有(其他产品包括代码形式的SBJSON),那么您可以删除自己的版本或其他产品中包含的版本。 – 2011-05-08 22:22:36