2010-02-17 8 views

Odpowiedz

21

Musisz używać UIKit, gdy potrzebujesz komponentów GUI. Ale nie trzeba importować tej biblioteki, czy to już określić na Prefix.pch:

#ifdef __OBJC__ 
    #import <Foundation/Foundation.h> 
    #import <UIKit/UIKit.h> 
#endif 

To pozwala na import tych bibliotek dla wszystkich bieżącym projekcie.

+0

Nie wiedziałem tego. Dziękuję Ci. –

+0

Noted @ Odpowiedź RobNapiera poniżej, w której mówi, że powinieneś zaimportować ją do każdego '.h', który i tak go używa. –

+1

Pamiętaj, że parametr Prefix.pch jest już uznany za przestarzały. – andreacipriani

0

Powinieneś zaimportować go do pliku .h dowolnej klasy, która tego potrzebuje. Jest to prawdą, chyba że klasa rozszerza inną klasę, która ją importuje, wtedy nie musisz tego robić. Prawdopodobnie nie chcesz robić nic bardziej skomplikowanego, ponieważ wszystkie aplikacje iPhone będą łączyć bibliotekę. Jeśli rozmawialiśmy o bibliotece trzeciej lub mniejszej, możesz być ostrożny. Aby uniknąć problemów z ponownym korzystaniem z kodu.

23

Podczas gdy plik pch jest przydatny do wstępnego kompilowania nagłówków, naprawdę zalecam, aby pliki importowały to, czego używają. To znacznie ułatwia zrozumienie zależności i znacznie łatwiejsze ponowne wykorzystanie kodu, w tym ponowne wykorzystanie na różnych platformach (iPhone vs Mac).

Mając to na uwadze, odpowiedź brzmi, że nie należy importować pliku UIKit.h do każdego pliku. Powinieneś zaimportować go do każdego pliku, który używa UIKit. To powinno być twoje klasy Widok i Kontroler. Klasy modelowe prawie nigdy nie powinny używać UIKit. Powinny one zasadniczo importować Foundation.h. Przestrzeganie tej zasady ułatwi przenoszenie obiektów do innych projektów, które mogą mieć inny kod w pliku .pch i łatwiejsze ponowne użycie klas modeli na telefonie iPhone i komputerze Mac.

Zazwyczaj nie polecam importowania UIKit.h lub Foundation.h do podklas własnych klas. Zwykle importuję UIKit, AppKit lub Foundation do pliku nagłówkowego najwyższego poziomu w moim kodzie. Na przykład, jeśli mam podklasę UIView o nazwie MYAbstractView, która importuje UIKit.h (aby uwzględnić definicję UIView), a następnie doda podklasę MYConcreteView, po prostu zaimportowałbym MYAbstractView.h.

Pamiętaj, że UIKit i AppKit zarówno już importują Foundation, więc nie ma powodu, aby importować oba.

+1

Czy ten komentarz nadal jest zgodny z najnowszymi wersjami Xcode/iOS, w/ARC itp.? – NathanChristie

+1

Nic w najnowszych wersjach Xcode nie zmieni tej porady. –

Powiązane problemy