我正在开发一个适用于iOS的静态库,并希望实现一些公开的方法,供库中的其他类使用,但不能向外看。基本上,我想创建类似于Apple的“私有”API调用的东西。
我很好,有人能够调用这些方法,因为他们发现了他们的名字,但我只想将它们从库中打包的头文件中掩盖,以便XCode不给他们调用的选项默认情况下这些方法,可能会发出警告。
知道如何实现这一目标吗?
答案 0 :(得分:6)
以下是一个想法 - 您可以在单独的.h文件中的单独类别中定义类的“私有”方法。例如,您可以将A类看起来如下所示:
A.H
@interface A : NSObject {
}
- (void) foo; //public method
@end
现在可以在不同的文件中声明A的私有方法:
A + Internal.h
@interface A (Internal)
- (void) bar; //private method
@end
A (A.m)
的实现文件可以实现两组方法。
在静态库中,不要在名称中发布带有"+Internal"
的头文件。您的库的用户只能看到A.h
中的方法,但是库中的类可以同时使用这两种方法。
答案 1 :(得分:5)
您可以在。{3}} @interface MyClass(PrivateMethods)
或.m文件顶部的类扩展@interface MyClass()
或其自己的私有头文件中声明您的“私有”方法。
来自category:
类扩展类似于匿名类别,除了它们声明的方法必须在相应类的主@implementation块中实现。
类通常具有公开声明的API,然后私有声明其他方法,仅供类所在的类或框架使用。您可以在上面提到的私有头文件或实现文件中的类别(或多个类别)中声明此类方法。这样可行,但编译器无法验证是否已实现所有声明的方法。
类扩展允许您在主类@interface块之外的位置为类声明其他必需的方法。
另见: Extensions