这是我的问题。
假设我有一个名为WebServiceBase.h的类。我需要在该类中添加一个名为NSString * requestData的iVar。但是我不需要将iVar添加到头文件中并使其对外部人员可见。 (如果我将其作为类库分发)
此外,我需要能够在从WebServiceBase.h扩展的其他类中访问此requestData iVar。 (这些扩展类是由我编写的。不是来自外部人员)
我尝试在类扩展中声明requestData iVar。但是扩展类不可见。
任何解决方案?我需要保护我的数据并使其隐藏在外部世界之外。
答案 0 :(得分:3)
您可以通过@protected
关键字将您的ivars定义为受保护,这意味着您的类和所有子类可以毫无问题地访问它,但编译器不会允许其他不继承的类你的基类:
@interface Foo : NSObject
{
@protected
NSObject *a;
}
它就像那样简单,并且已经为您提供了从Objective-C获得的所有安全性。
答案 1 :(得分:1)
你可以在@implementation块中有一个ivar定义块。
答案 2 :(得分:0)
有两种方式,您可以选择一种方式。
1).h file
@interface YourClass
{
}
.m file
@interface YourClass ()
@property (nonatomic, retain) NSString *title;
@end
@implementation YourClass
@synthesize title;
//your method
2) .h flie
@interface YourClass
{
}
.m file
@implementation YourClass
{
NSString *title;
}
//your method
答案 3 :(得分:0)
声明一个类扩展,在另一个.h文件中定义ivar。称之为myclass-private.h
。然后在主类和子类中导入该标题。