Iphone 如何使它成为类的私有成员或方法,以便可以在静态库内部而不是在库外部访问它?
我想为objective-c中的以下课程准备一个小型静态库: 类A,类B,类C。我想在静态库中包含这些类。现在,类A可以访问类B或类C的方法的公共成员 现在,当我将上述库集成到其他项目中时, 我准备的D班只能进入A班和B班 不是C班,我怎么做 我的另一个怀疑是假设 NSString*isValid在类B中声明 我希望上面的变量可以从类A和类C访问 我的意思是库中包含的文件可以访问上述变量 但从库外部无法访问上述变量。 如何将其私有化,使其可以在库内而不是在库外访问Iphone 如何使它成为类的私有成员或方法,以便可以在静态库内部而不是在库外部访问它?,iphone,objective-c,ios,static-libraries,Iphone,Objective C,Ios,Static Libraries,我想为objective-c中的以下课程准备一个小型静态库: 类A,类B,类C。我想在静态库中包含这些类。现在,类A可以访问类B或类C的方法的公共成员 现在,当我将上述库集成到其他项目中时, 我准备的D班只能进入A班和B班 不是C班,我怎么做 我的另一个怀疑是假设 NSString*isValid在类B中声明 我希望上面的变量可以从类A和类C访问 我的意思是库中包含的文件可以访问上述变量 但从库外部无法访问上述变量。 如何将其私有化,使其可以在库内而不是在库外访问 谢谢你的帮助 据我所知,Obj
谢谢你的帮助 据我所知,Obj-C中没有办法保护公众成员的访问权,就像你需要的那样。一种常见的方法是不在静态库附带的头文件中包含方法和IVAR。为了自己编译库,当然必须使用完整的私有头
请注意,这不适用于Objective-C++,因为在编译时库的客户端必须知道类结构 您可以使公共方法仅对静态库可见,但在其外部不可见 下面是如何做到这一点 1) 创建要在库外部使用的头文件
#import <Foundation/Foundation.h>
@interface ClassA : NSObject
@property(nonatomic,readwrite)BOOL publicProperty;
-(void)publicMethod;
@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
在静态库中使用私有属性和方法
在ClassB.m文件中,导入ClassA类别的头文件
#import "ClassB.h"
#import "ClassA.h"
#import "ClassA+Internal.h"
现在您可以访问ClassA的私有属性和方法
创建没有私有属性和方法的静态库
创建静态库时,将“ClassA+Internal.h”类别头文件保存在“构建阶段”、“复制头”的“私有”或“项目”头部分中
这样,当您构建静态库时,外部将无法访问ClassA+Internal.h类别。当您的答案几乎是相同的解决方案(尽管解释得更好)时,我关于“您需要使用库的两个标题,一个公共标题和一个私有标题”的回答怎么会错误到足以导致否决票?私有标题是声明类别还是重新声明完整标题与问题无关。@Cyprian:为什么必须在classA.m中重新声明匿名类别中的属性和函数?
#import "ClassB.h"
#import "ClassA.h"
#import "ClassA+Internal.h"