2015-05-13 25 views
5

chciałbym wiedzieć, które miejsce jest najlepsze dla umieszczania IBOutlets od storyboardów:IBOutlet najlepsze praktyki

a) W pliku nagłówka (.h)

b) w rozszerzeniu klasy utworzony na. m plik

Dziękuję

Pozdrowienia

+0

jeśli chcesz uzyskać dostęp do gniazdka z innego VC następnie .h inaczej .m –

+0

@Bhavin najlepsza praktyka doprowadzi do nie chcą otworzyć wylot z innego VC – Wain

Odpowiedz

3

Zakładając, że jest to dla kontrolera widoku, opcja b jest lepiej, jak nie powinno być wystawienie wyloty publicznie fo r inne klasy do bezpośredniej interakcji. Powinny być uważane za twoją prywatną wiedzę. Twój kontroler powinien ujawnić inny i bardziej odpowiedni interfejs.

Jeśli jest to widok, to jest trochę szaro, jak powinieneś podejść do problemu, ponieważ MVC poprowadzi cię do ujawnienia gniazdek, aby umożliwić kontrolerowi korzystanie z nich. MVVM poprowadzi cię do ukrycia wylotów, tak aby widok został przekazany do obiektu modelu widoku i wewnętrznie konfiguruje wyjścia.

4

Rozszerzenie klasy to najlepsze miejsce, jeśli nie chcesz wystawiać tego sklepu publicznie. Twoja .h powinna być czysta i powinna zawierać tylko te metody lub właściwości, które są publiczne (dostępne dla innych programistów). W ten sposób nie będą mylić kolegę, nie mając niepotrzebnych Ivars i metod spowolnienia .h pliku

To wszystko o zarządzaniu kod i czyni mniej nieporozumień, w przeciwnym razie nie ma żadnych metod prywatnych/właściwości w Objective-C

Również, jeśli zaznaczysz próbkę jabłka, wykonają ten sam wzór. na przykład LoadingStatus.m ma kod

#import "LoadingStatus.h" 

@interface LoadingStatus() 

@property (nonatomic, strong) UIActivityIndicatorView *progress; 
@property (nonatomic, strong) UILabel *loadingLabel; 

@end 
7

Od Apple Resource Programming Guide: Nib Files:

wyloty są ogólnie uważane za prywatne do klasy definiującej; chyba że istnieje powód do publicznego ujawnienia nieruchomości, ukryj deklaracje właściwości jako rozszerzenie klasy.

1

@interface mogą pojawiać się zarówno w pliku .h (właściwości publiczne) i pliku .m (prywatnych posesji). IBOutlets powinny być zadeklarowane w pliku .m.

Jeśli jesteś zainteresowany czytać ten topic.

Pozdrawiam!

11

Należy pamiętać, że .h jest publicznym nagłówkiem.

Umieść tam swoje IBOutlet, jeśli powinny być dostępne dla innych klas.

Jednak nawet jeśli możesz to zrobić. Powiedziałbym, że eksponowanie IBOutlet w publicznym nagłówku nie jest dobrą praktyką (z perspektywy orientacji obiektu), ponieważ ujawniasz pewne szczegóły implementacji, które powinny być widoczne tylko dla kogo jest zainteresowany.

Krótko mówiąc, umieszczenie IBOutlet w rozszerzeniu klasy w .m jest dobrą praktyką.