Objective-C не имеет внутренних классов в качестве языковой конструкции, однако вы можете делать все что угодно, например, скрывать как интерфейс, так и реализацию «внутреннего класса» в файле .m MainClass и иметь скрытыйфабричный метод (не в интерфейсе) в 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