//MainClass.m
@interface InnerClass : NSObject{
}
@end
@implementation InnerClass
-(void)run{
while(isActive){//want to access this variable which defined in MainClass
//do something
}
}
@end
@interface MainClass : NSObject{
BOOL isActive;
}
@end
@implementation MainClass
@end
我有MainClass,它有一个内部类(InnerClass)。我想从内部类访问MainClass类中定义的布尔类型变量(isActive)。我想要做的是内部类将在一个单独的线程上运行,并将继续检查主类上的isActive变量,如果isActive为false,那么它将停止运行新线程..提前感谢... < / p>
答案 0 :(得分:8)
Objective-C没有内部类。考虑使isActive成为MainClass的一个属性,给InnerClass一个指向MainClass实例的指针,让InnerClass只是访问该属性。
答案 1 :(得分:3)
Objective-C没有内部类作为语言构造,但你可以做各种棘手的事情,比如隐藏MainClass的.m文件中的“innerclass”的接口和实现,并隐藏MainClass上的工厂方法(不在界面中)创建“内部类”,其中bool*
属性分配给主类的&isActive
。
<强> MainClass.h 强>
@interface MainClass : NSObject{
BOOL isActive;
}
@end
<强> MainClass.m 强>
@interface InnerClass : NSObject{
BOOL* isActive;
}
-(id)initWithActive:(BOOL*)isAct){
if (self = [super init]) {
isActive = isAct;
}
return self;
}
@end
@implementation InnerClass
-(void)run{
while(*isActive){//want to access this variable which defined in MainClass
//do something
}
}
@end
@implementation MainClass
//Can use [self newInnerClass] to create a new instance of the innerclass
-(id)newInnerClass{
return [[[InnerClass alloc] initWithActive:&isActive] autorelease];
}
@end