我声明了一系列处理通信协议(protocol)的静态类。我想声明一个父类来处理常见消息,如 ACK、内联错误...
我需要一个静态变量来维护当前正在处理的元素,我想在父类中声明它。
我是这样做的:
parent .m
@implementation ServerParser
static NSString * currentElement;
但是子类没有看到 currentElement。
最佳答案
如果您在类的实现文件中声明了一个静态变量,那么该变量只对那个类可见。
您可以在类的头文件中声明静态变量,但是,它对所有#import
头文件的类都是可见的。
一种解决方法是在父类中声明静态变量,正如您所描述的,同时创建一个类方法来访问该变量:
@implementation ServerParser
static NSString *currentElement;
...
+ (NSString*)currentElement
{
return currentElement;
}
...
@end
然后,您可以调用以下方法获取静态变量的值:
[ServerParser currentElement];
然而,除非其他类使用该方法,否则该变量将不可见。
关于Objective-C:如何声明一个对子类可见的静态成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/844958/