我怎样才能使它的私人成员或类的方法,以便它可以在静态库本身而不是在图书馆之外访问?
我想为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 ++,在编译时必须知道库的客户端的类结构。