【发布时间】:2012-02-17 15:54:49
【问题描述】:
如果布尔值设置为某个值,我打算覆盖子类中的一个方法,然后切换这个值,并想到了两个选项:
1.调用 super 并检查成功
// Superclass
-(BOOL) showEngine
BOOL result = !self.isEngineActive;
if (result) {
// Does something common to both super and subclass
self.isEngineActive = YES;
}
return result;
}
// Subclass override
-(BOOL) showEngine
BOOL result = [super showEngine];
if (result) {
// Does something unique to subclass
}
return result;
}
2。委托给第二种方法
// Superclass
-(void) showEngine
if (!self.isEngineActive) {
// Delegate
showEngineNow();
// Does something common to both super and subclass
self.isEngineActive = YES;
}
}
// Subclass override
-(void) showEngineNow() {
[super showEngineNow];
// Does something unique to subclass
}
第一个方法具有必须调用 super 并检查结果的负面影响,而第二个方法具有对委托的第二个方法调用的负面影响。哪种方法更好,有没有我没有想到的方法?
【问题讨论】:
标签: objective-c overriding boolean superclass