/ / Jaki jest najlepszy sposób zdefiniowania prywatnych metod dla klasy w Objective-C? - iPhone, cel-c

Jaki jest najlepszy sposób definiowania prywatnych metod dla klasy w Objective-C? - iphone, cel-c

Lubić:

@interface ClassXXName(private)
- (void)  xxxfunctions
@end

lub metody kategorii użytkownika?

Odpowiedzi:

3 dla odpowiedzi № 1

@ interfejs Foo () tworzy rozszerzenie klasy (Istoją poprawione, rekwizyty do bbum) na interfejsie Foo, który jest jak dodatkowe metody dodane do interfejsu. Niektóre osoby używają również @interafce Foo (prywatne) (kategoria) zamiast rozszerzenia klasy za pomocą (). To bardziej przypomina „wstrzykiwanie” nowych metod do klasy spoza klasy.

Umieszczając to w.plik m po prostu powstrzymuje inne rzeczy przed „zobaczeniem” w pliku .h, ale to jest to. Zasadniczo ludzie zwykle używają kategorii lub rozszerzeń klas w plikach .m do określania prywatnych interfejsów, ale są również używane do takich rzeczy, jak UIKit kategorie, aby dodać publiczne metody wierszy i sekcji do NSIndexPath. (Może to być mylące).

Naprawdę nie musisz definiować prywatnych metodw ten sposób, ale jeśli masz metodę o nazwie bar, która wywołuje metodę foo, zanim foo zostanie zdefiniowane w pliku źródłowym, otrzymasz kompilator ostrzegający o tym, że „obiekt self może nie reagować na foo”. Możesz się tego pozbyć, definiując foo przed zdefiniowaniem kodu kreskowego lub innego kodu wywołującego foo. To samo z prostym C i funkcjami.

Jak mówi Ole, nie powstrzymuje to nikogowywołując metody prywatne, po prostu deklaruje zamiar bycia prywatnym i powoduje, że kompilator generuje ostrzeżenia „może nie odpowiadać”, nawet jeśli importuje plik .h.