【问题标题】:How to define methods and properties only visible within an objective-c framework?如何定义仅在 Objective-C 框架中可见的方法和属性?
【发布时间】:2012-10-24 21:50:49
【问题描述】:
我正在尝试编写一个objective-c 框架,并且我希望方法和属性仅在框架内可见。我知道我可以在实现文件内的类扩展中定义它们,但是其他类将无法访问它们。
我想这样做的一种方法是定义一个类别,例如 MyClass+Internals 并将该标题设为私有。但将 MyClass.h 标头公开。我想知道是否有更好的方法来做到这一点。另外,我不确定您是否可以在我认为只是方法的类别中定义属性。感谢您的任何建议或反馈。
【问题讨论】:
标签:
objective-c
ios
categories
【解决方案1】:
假设你有一个名为“Foo”的类,那么在“Foo_Framework.h”中,创建:
@interface Foo()
@property ....;
- .... method ....
@end
然后,确保在@implementation Foo之前导入了“Foo_Framework.h”。这将导致类 Foo 使用在所述头文件中找到的扩展接口进行编译。然后可以在整个框架中使用该标头。只是不要让它在上述框架之外可用。
您不能在类别中声明属性(合成的)是正确的。这是创建类扩展的主要动机之一,上面就是一个例子。