Интересно, может ли кто-нибудь знать ответ на этот вопрос - есть ли затраты, связанные с сокрытием слоя.
Например, если слой уже скрыт, вызывает ли вызов layer.hidden = YES снова и снова какие-либо дополнительные издержки, чем простое прохождение по стеку вызовов? Какао достаточно умен, чтобы знать, что слой уже спрятан?
- (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;
}
}
Первый шаблон допускает замыкание в условном операторе, что приводит к лучшей практике кодирования, но приводит к дополнительным вызовам стека, в то время как второй шаблон является более явным, но приводит к условному оператору, который проваливается.
Спасибо,
Bryan