想知道是否有人可能知道这个问题的答案 - 是否存在与过度隐藏图层相关的成本。
例如,如果一个层已经隐藏,那么一遍又一遍地调用 layer.hidden = YES 是否比简单地通过调用堆栈有更多的开销?Cocoa 是否足够聪明,可以知道该层已被隐藏?
- (void) drawRect:(CGRect)rect
{
if ( characterLeftFlag ) {
characterLeftView.layer.hidden = NO;
characterRightView.layer.hidden = YES;
}
else {
characterLeftView.layer.hidden = YES;
characterRightView.layer.hidden = NO;
}
}
或者我是否需要始终检查图层可见性是否已更改然后调用隐藏?
- (void) drawRect:(CGRect)rect
{
if ( characterLeftFlag && characterLeftView.layer.hidden ) {
characterLeftView.layer.hidden = NO;
characterRightView.layer.hidden = YES;
}
else if ( characterRightFlag && characterRightView.layer.hidden ) {
characterLeftView.layer.hidden = YES;
characterRightView.layer.hidden = NO;
}
}
第一个模式允许关闭条件语句,这会导致更好的编码实践,但确实会导致额外的堆栈调用,而第二个模式更明确,但会导致条件语句失败。
谢谢,布莱恩