我怎样才能使它的私人成员或类的方法,以便它可以在静态库本身而不是在图书馆之外访问?

我想为objective-c中的下面的类准备小的静态库:A类,B类,C类。我想将这些类包含在静态库中。 现在A类可以访问B类或C类方法的公共成员

现在,当我在上面的库中集成其他项目时,我准备了只能访问A类和B类不是C类的D类。我该怎么做?

我的另一个疑问是假设NSString * isValid在B类中声明。

我希望上面的variables可以从A类和C类访问我的意思是库的包含文件可以访问上面的variables。

但是从外部库以上variables不能访问。 怎样才能让它在图书馆内部被访问,而不是在图书馆之外?

感谢帮助 !

你可以使公开的方法只对你的静态库可见,但不可见的一面。

这是如何做到这一点。

1)创build一个头文件,在你的库之外使用

#import <Foundation/Foundation.h> @interface ClassA : NSObject @property(nonatomic,readwrite)BOOL publicProperty; -(void)publicMethod; @end 

2)创build一个只能由静态库内部使用的类别

 #import "ClassA.h" @interface ClassA (Internal) @property(nonatomic,readwrite)BOOL privateProperty; -(void)privateMethod; @end 

注意命名此文件:“ClassA + Internal.h”

3)再次在.m文件中声明你的私有属性和方法

 #import "ClassA.h" @interface ClassA () @property(nonatomic,readwrite)BOOL privateProperty; -(void)privateMethod; @end @implementation ClassA @synthesize publicProperty; @synthesize privateProperty; //... @end 

在静态库中使用私有属性和方法

在ClassA类别的ClassB.m文件导入头文件中

 #import "ClassB.h" #import "ClassA.h" #import "ClassA+Internal.h" 

现在您可以访问ClassA的私有属性和方法

创build没有私有属性和方法的静态库

当你创build静态库时,将“ClassA + Internal.h”类别头文件保存在“Build Phases”,“Copy Headers”的“private”或“project”

这样,当你build立你的静态库时,ClassA + Internal.h类别将不能被外部访问。

据我所知,Obj-C没有办法保护公共成员的访问权限,就像你需要的一样。 一个常用的方法就是不要将方法和ivars包含在你使用静态库的头文件中。 为了自己编译库,你当然必须使用你的完整的私有头文件。

请注意,这不适用于Objective-C ++,在编译时必须知道库的客户端的类结构。