Dlaczego nie jest ProjectName-Prefix.pch
tworzony automatycznie w Xcode 6
?
Czy nagłówek prekompilacji nie jest już potrzebny?
Gdzie mam napisać kod, który był ProjectName-Prefix.pch
wcześniej?
Podejrzewam, że z powodu modułów, które eliminują potrzebę #import <Cocoa/Cocoa.h>
.
Co do tego, gdzie umieścić kod, który należy umieścić w nagłówku prefiksu, nie ma kodu, który należy umieścić w nagłówku prefiksu. Umieść swoje importy w plikach, które ich potrzebują. Umieść swoje definicje we własnych plikach. Umieść swoje makra ... nigdzie. Przestań pisać makra, chyba że nie ma innej możliwości (na przykład kiedy potrzebujesz __FILE__
). Jeśli potrzebujesz makr, umieść je w nagłówku i dołącz.
Nagłówek prefiksu był niezbędny dla rzeczy, które są ogromne i używane przez prawie wszystko w całym systemie (jak Foundation.h
). Jeśli masz coś tak ogromnego i wszechobecnego, powinieneś przemyśleć swoją architekturę. Nagłówki prefiksów utrudniają ponowne użycie kodu i wprowadzają subtelne problemy z kompilacją, jeśli którykolwiek z wymienionych plików może ulec zmianie. Unikaj ich, dopóki nie pojawi się poważny problem z czasem kompilacji, który możesz wykazać, że został znacznie poprawiony dzięki nagłówkowi prefiksu.
W takim przypadku możesz go utworzyć i przekazać go do brzęku, ale jest to niezwykle rzadkie, że to dobry pomysł.
EDYCJA: Na twoje konkretne pytanie dotyczące interfejsu, którego używasz we wszystkich kontrolerach widoku, tak, powinieneś absolutnie zaimportować go do każdego kontrolera widoku, który faktycznie go używa. To wyjaśnia zależności. Kiedy ponownie użyjesz kontrolera widoku w nowym projekcie (co jest powszechne, jeśli dobrze zbudujesz kontrolery), natychmiast dowiesz się, czego wymaga. Jest to szczególnie ważne w przypadku kategorii, które mogą utrudnić ponowne użycie kodu, jeśli są niejawne.
Plik PCH nie pozwala pozbyć się zależności od list. Nadal powinieneś importować UIKit.h
lub Foundation.h
w razie potrzeby, podobnie jak szablony Xcode. Powodem PCH jest skrócenie czasu kompilacji w przypadku naprawdę dużych nagłówków (jak w UIKit).
TWAPIManager.m
, na przykład, do innego projektu, otrzymasz błędy, któreTWALog()
nie są zdefiniowane, bez żadnej wskazówki, gdzie je znaleźć. Właśnie ten problem spotkałem w kilku dużych projektach próbujących współdzielić kod. UtworzenieTWAPILog.h
i zaimportowanie rozwiązuje to przy niewielkich kosztach tworzenia.Bez pytania, czy jest to właściwe, czy nie, możesz ręcznie dodać plik PCH:
Dodaj nowy plik PCH do projektu: Nowy plik> Inne> Plik PCH .
W opcji Ustawienia kompilacji obiektu docelowego ustaw wartość Nagłówka prefiksu na nazwę pliku PCH, z nazwą projektu jako prefiksem (tzn. Dla nazwanego projektu
TestProject
i pliku PCHMyPrefixHeaderFile
dodaj wartośćTestProject/MyPrefixHeaderFile.pch
do listy).WSKAZÓWKA: Możesz użyć rzeczy takich jak
$(SRCROOT)
lub,$(PROJECT_DIR)
aby dostać się do ścieżki, w której umieścisz.pch
projekt.W opcji Ustawienia kompilacji obiektu docelowego ustaw wartość Prekompilowanego nagłówka prefiksu na
YES
.źródło
Musisz utworzyć własny plik PCH
Dodaj
New file -> Other-> PCH file
Następnie dodaj ścieżkę tego pliku PCH do swojej kompilacji
setting->prefix header->path
źródło
$(PRODUCT_DIR)/$(PRODUCT_NAME)/PrefixHeader.pch
Pokażę ci zdjęcie!
Dodaj nowy plik
Przejdź do Project / Build Setting / APPl LLVM 6.0-Language
źródło
Aby dodać plik .pch
1) Dodaj nowy plik .pch do swojego projektu-> Nowy plik-> inny-> plik PCH
2) Przejdź do ustawień kompilacji projektu.
3) Wyszukaj „nagłówek prefiksu”. Można to znaleźć pod Apple LLVM.
4) Wklej to w pole
$(SRCROOT)/yourPrefixHeaderFileName.pch
5) Oczyść i zbuduj projekt. Otóż to!!!
źródło
Jeśli zdecydujesz się ręcznie dodać plik .pch i chcesz używać Objective-C tak jak przed xCode 6, będziesz musiał również zaimportować frameworki UIKit i Foundation do pliku .pch. W przeciwnym razie konieczne będzie ręczne zaimportowanie tych ram w każdym pliku nagłówka. Możesz dodać poniższy kod, który testuje używany język:
źródło
Posługiwać się :
źródło
Aby dodać nowy plik PCH, wykonaj następujące czynności:
(1) Dodaj nowy podgląd - wybierz iOS - inny i plik PCH
(2) dodaj ścieżkę tego pliku PCH do swojego projektu - BuildSetting - Apple LLVM 6.0 Language
Dodaj zestaw Prefiks Ścieżka nagłówka YourApplicationName (root-path) /filename.pch
źródło