iOS静态库和方法隐藏

时间:2011-06-03 14:46:38

标签: iphone objective-c

我正在开发一个适用于iOS的静态库,并希望实现一些公开的方法,供库中的其他类使用,但不能向外看。基本上,我想创建类似于Apple的“私有”API调用的东西。

我很好,有人能够调用这些方法,因为他们发现了他们的名字,但我只想将它们从库中打包的头文件中掩盖,以便XCode不给他们调用的选项默认情况下这些方法,可能会发出警告。

知道如何实现这一目标吗?

2 个答案:

答案 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