创建框架时有没有办法创建“私有对象”? (意思是,不会在外面导出的类)
我有一个问题,我的框架使用JSON库,当使用我的框架的项目尝试也包含JSON库时,他们会得到“已定义符号”错误。
谢谢!
答案 0 :(得分:1)
使用Objective-C,这是不可能的。虽然有一些防止冲突的准则,例如,应该为其他人“隐藏”的成员使用前缀,并且成员变量通常也带有下划线(Apple保留使用2个下划线的权利)。您使用的是哪个JSON框架?也许考虑SBJSON如果你还没有使用它,它会使用前缀(SB)来防止碰撞。
来自Apple的文档:
前缀是编程接口中名称的重要组成部分。它们区分了软件的功能区域。通常,这个软件在一个框架中打包,或者(在基础和应用程序工具包的情况下)在密切相关的框架中打包。前缀可以防止第三方开发人员定义的符号与Apple定义的符号之间的冲突(以及Apple自己的框架中的符号之间)。
前缀具有规定的格式。它由两个或三个大写字母组成,不使用下划线或“子前缀”。以下是一些示例 NS:基金会 NS:应用套件 AB:地址簿 IB:Interface Builder
在命名类,协议,函数,常量和typedef结构时使用前缀。命名方法时不要使用前缀;方法存在于由定义它们的类创建的名称空间中。另外,不要使用前缀来命名结构的字段
如果您想坚持使用您使用的JSON库,并且“命名空间”是问题的原因,请考虑在您自己的类中添加前缀。