Właśnie widziałem w Facebook SDK dla iOS, nazywają [super layoutSubviews]; na końcu, a nie na początku metody layoutSubviews. O ile mi wiadomo, powinniśmy zawsze robić to jako pierwszą linię. Czy to może spowodować nieoczekiwane zachowanie interfejsu użytkownika?Jaki jest prawidłowy sposób wywoływania [super layoutSubviews]?
- (void)layoutSubviews
{
CGSize size = self.bounds.size;
CGSize longTitleSize = [self sizeThatFits:size title:[self _longLogInTitle]];
NSString *title = (longTitleSize.width <= size.width ?
[self _longLogInTitle] :
[self _shortLogInTitle]);
if (![title isEqualToString:[self titleForState:UIControlStateNormal]]) {
[self setTitle:title forState:UIControlStateNormal];
}
[super layoutSubviews];
}
"O ile mi wiadomo, powinniśmy zawsze robić to jako pierwszą linię" Jak to "wiedzieć"? – matt
@matt, uważam, że jest to konwencja, którą społeczność programistów iOS używa jako super-klasy, może mieć pewne ustawienia domyślne/ogólne, które mogą wpływać na nasz niestandardowy układ, który nie ma zastosowania (jeśli zrobimy to na końcu metody). Podobnie jak wywołanie super w konstruktorach/inicjalizatorach jako pierwszej linii. – ppalancica
"super-klasa może mieć pewne ustawienia domyślne/ogólne, które mogą wpłynąć na nasz niestandardowy układ, który nie ma zastosowania (jeśli zrobimy to na końcu metody)." Tak, to absolutnie prawda. Ale to nie to samo, co "zawsze powinno". – matt