我想要一个类的.h中的静态变量,并希望它继承到它的子类。
@interface :UIViewController
static bool isSearchWindowOpen ; //something like this.
@end
如果我这样写:
static bool isSearchWindowOpen ;
@interface :UIViewController
@end
它工作正常但不能由子类继承。
建议。
答案 0 :(得分:1)
这听起来有点像你把它与其他一些编程语言混淆,比如C ++。在Objective-C中,就像C一样,静态变量是具有文件范围的变量。如果在头文件中声明静态变量,则包含该头文件的任何源文件都有自己的静态变量副本。
你可能想要一个类方法
+ (BOOL)isSearchWindowOpen
实施
static BOOL sSearchWindowOpen;
+ (void)setSearchWindowOpen:(BOOL)open { sSearchWindowOpen = open; }
+ (BOOL)isSearchWindowOpen { return sSearchWindowOpen; }
编写检查搜索窗口是否打开的代码可能更好,而不是依赖于必须始终正确跟踪的静态变量。
答案 1 :(得分:0)
声明的变量与类无关。它是“C sense”中的全局静态:只有同一文件中的代码才能访问它。 (See Wikipedia for details。)您可以编写类访问器:
static BOOL foo;
+ (void) setFoo: (BOOL) newFoo
{
foo = newFoo;
}
这样,类后代也可以访问变量。但无论如何,这不是一个好主意。你想解决什么问题?