Kompilacja iOS 10 / Xcode 8 GM jest poniżej, nigdy wcześniej nie miał tego na Xcode 7. Jakieś pomysły?
objc [25161]: Klasa PLBuildVersion jest zaimplementowana zarówno w /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/PrivateFrameworks/AssetsLibraryServices. 0x120/fr. i /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/PrivateFrameworks/PhotoLibraryServices.framework/PhotoLibraryServices (0x1202c4210). Jeden z dwóch będzie użyty. Który jest niezdefiniowany.
(UWAGA: Wydaje się, że dzieje się to tylko w symulatorze, nie pojawia się na prawdziwym urządzeniu).
Odpowiedzi:
Główny pomysł
Główna idea jest prosta:
Jeśli twoja aplikacja (lub zależności, takie jak Pods) używa frameworka, który używa jawnej (lub niejawnej)
PhotoLibraryServices.framework
lubAssetsLibraryServices.framework
jako zależności, Xcode ostrzeże Cię (nawet jeśli używasz tylko jednej z nich). To może byćPhotos/PhotosUI.framework
alboAssetsLibrary.framework
, lub innego (nie mam pełną listę zależności, ale jest to możliwe).Jaki jest problem?
Klasa o nazwie
PLBuildVersion
jest zdefiniowana zarówno w, jakPhotoLibraryServices.framework
iAssetsLibraryServices.framework
. Nazwa klasy jest unikalna w Objective-C (nie można zdefiniować 2 klas o tej samej nazwie), więc nie jest zdefiniowane, która z nich będzie używana w czasie wykonywania.Myślę jednak, że nie będzie to problemem, ponieważ obie klasy mają te same metody i pola (sprawdziłem to za pomocą deasemblera) i myślę, że obie zostały skompilowane z tego samego źródła.
Radar jest już wysłany.
źródło
.attributedText
. Nie mam dostępu do aparatu ani zdjęć. To ostrzeżenie powoduje również poważne opóźnienie w załadowaniu kontrolera widoku, nawet jeśli nie wymaga to pracochłonnych zadań (brak dostępu do sieci, brak operacji we / wy plików itp.).Zgodnie z odpowiedzią pracownika Apple na Forum programistów Apple :
źródło
Nie udało mi się znaleźć sposobu na usunięcie ostrzeżenia, ale jeśli chcesz zapobiec awarii aplikacji, musisz podać opis, dlaczego uzyskujesz dostęp do aparatu, biblioteki zdjęć itp. Jest to nowość w iOS10.
Wprowadź następujące dane do swojego
Info.plist
pliku.Zdjęcie
Klucz:
Privacy - Photo Library Usage Description
Wartość:$(PRODUCT_NAME) photo use
Aparat fotograficzny
Klucz:
Privacy - Camera Usage Description
Wartość:$(PRODUCT_NAME) camera use
Więcej informacji można znaleźć tutaj: https://iosdevcenters.blogspot.com/2016/09/infoplist-privacy-settings-in-ios-10.html
źródło
info.plist
pliku szczegóły konfiguracji klucza / łańcucha . Najwyraźniej jest to potrzebne w IOS 10.xUważam, że możesz uzyskać ten błąd tylko za pomocą UIWebView. Moim rozwiązaniem było zastąpienie korzystania z UIWebView przez WKWebView.
źródło
Miałem to po dodaniu odpowiedzi w usłudze Fabric do mojego projektu.
Usunięcie danych pochodnych załatwiło sprawę. (shift alt polecenie k w XCode)
Edytuj rok później:
Po usunięciu danych pochodnych zawsze wyjdź z XCode i uruchom go ponownie.
W niepowiązanych przypadkach mam wrażenie, że usunięcie danych pochodnych nie usuwa kodów XCode w pamięci podręcznej danych pochodnych.
źródło
Zresetowanie symulatora iOS naprawiło to dla mnie. Symulator -> Resetuj zawartość i ustawienia.
źródło
W moim przypadku to ostrzeżenie zaczęło pojawiać się po otwarciu drugiego projektu xcode i uruchomieniu drugiej aplikacji na symulatorze. Po przejściu z powrotem do pierwszej aplikacji zaczęło pojawiać się ostrzeżenie. Po prostu opuściłem Symulator i Xcode i ponownie otworzyłem swój projekt. Ostrzeżenie zniknęło potem. Jeśli to nie rozwiąże problemu, przejdź do innych odpowiedzi. Xcode może być czasem bardzo wybredny.
źródło