La classe PLBuildVersion est implémentée dans les deux cadres

225

La version iOS 10 / Xcode 8 GM obtient ce qui suit, jamais auparavant sur Xcode 7. Des idées?

objc [25161]: la classe PLBuildVersion est implémentée dans /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/PrivateFrameworks/AssetsLibraryServicesAlibraryServices et /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/PrivateFrameworks/PhotoLibraryServices.framework/PhotoLibraryServices10 (0x1202). Un des deux sera utilisé. Lequel n'est pas défini.

(REMARQUE: semble uniquement se produire dans le simulateur, n'apparaît pas sur le vrai appareil).

FlatDog
la source
1
Utilisez-vous Fabric ou une autre bibliothèque Twitter 3ème dans votre projet?
Kevin
3
Je n'utilise pas Twitter. peut-être que Firebase peut provoquer cela aussi?
Yitzchak
1
@noellee comme Zac J'utilise fabric dans mon projet et j'ai aussi la même erreur
user1019042
1
@Yitschak, j'utilise Firebase et je l'ai aussi.
n3wbie
1
oui, j'utilise Fabric and Crashlytics (v3.8.2)
FlatDog

Réponses:

144

Idée principale

L'idée principale est simple:

Si votre application (ou dépendances, telles que Pods) utilise un framework, qui utilise explicite (ou implicite) PhotoLibraryServices.frameworkou AssetsLibraryServices.frameworkcomme dépendance, Xcode vous avertit (même si vous n'utilisez qu'un seul d'entre eux). Ce peut être Photos/PhotosUI.frameworkou AssetsLibrary.framework, ou un autre (je n'ai pas la liste complète des dépendances, mais c'est possible).

Quel est le problème?

La classe avec le nom PLBuildVersionest définie à la fois dans PhotoLibraryServices.frameworket AssetsLibraryServices.framework. Le nom de classe est unique dans Objective-C (vous ne pouvez pas définir 2 classes avec le même nom), il n'est donc pas défini laquelle sera utilisée dans le runtime.

Cependant, je pense que ce ne sera pas un problème, car les deux classes ont les mêmes méthodes et champs (vérifié cela avec le désassembleur) et je suppose que les deux ont été compilés à partir de la même source.

Le radar est déjà envoyé.

Roman Ermolov
la source
2
le message d'avertissement est toujours là.
Faiz Fareed
9
J'ai constaté que si j'utilise Webview dans un VC, j'ai reçu ce type de message d'avertissement dans la fenêtre de débogage lorsque le VC est affiché. J'utilise Xcode 8.1, swift 3.
David.Chu.ca
1
Im utilisant xcode 8.2 et je n'ai aucune utilisation de photolibary dans mon projet et je reçois toujours cet avertissement.
Himanshu Moradiya
1
Est-ce moi uniquement ou la présentation du Viewcontroller devient lente, ce qui est présenté et a ce message d'avertissement ???
n ° 5
2
Je reçois également cet avertissement lorsque je mets .attributedText. Je n'accède pas à l'appareil photo ou aux photos. Cet avertissement entraîne également un décalage important du chargement du View Controller, même s'il n'y a pas de tâches gourmandes en temps (pas d'accès réseau, pas d'entrées / sorties de fichiers, etc.).
R Moyer
53

Selon la réponse d'un employé d' Apple sur le Forum des développeurs d'Apple :

Vous ne contrôlez aucune des sources de classe répertoriées, il n'y a donc rien que vous puissiez ou devriez faire - à part Signaler un bug.

Raphael Oliveira
la source
Je suppose que c'est ça.
Fattie
2
Même si ce n'est pas un problème, il génère
quand même une
46

Je n'ai pas pu trouver un moyen de me débarrasser de l'avertissement, mais si vous voulez empêcher l'application de planter, vous devez fournir une description des raisons pour lesquelles vous accédez à l'appareil photo, à la photothèque, etc. Ceci est nouveau dans iOS10.

Saisissez ce qui suit dans votre Info.plistfichier.

Photo

Clé: Privacy - Photo Library Usage Description Valeur: $(PRODUCT_NAME) photo use

Caméra

Clé: Privacy - Camera Usage Description Valeur: $(PRODUCT_NAME) camera use

Plus d'informations peuvent être trouvées ici: https://iosdevcenters.blogspot.com/2016/09/infoplist-privacy-settings-in-ios-10.html

Nick Meehan
la source
33
Les messages d'avertissement sont toujours là.
Kevin
6
mon application n'utilise pas du tout l'appareil photo et je reçois le message. Pourtant, j'ai essayé d'ajouter ceux-ci à plist comme vous l'avez suggéré et cela ne l'a toujours pas résolu ..
FlatDog
5
Quelqu'un a compris ça? Je n'utilise pas de photothèque et je n'utilise pas d'appareil photo, mais je reçois toujours l'avertissement et le crash
MikeG
2
@MikeG Je n'utilise pas non plus de bibliothèque et j'obtiens toujours le plantage, je me suis débarrassé des avertissements en ajoutant les détails de configuration de clé / chaîne au info.plistfichier. Apparemment, c'est nécessaire dans IOS 10.x
David Morton
2
J'ai cet avertissement après avoir défini textView.attributedText sur NSAttributedString
mik.ro
12

Je trouve que vous pouvez obtenir cette erreur simplement en utilisant un UIWebView. Ma solution a été de remplacer mon utilisation d'UIWebView par WKWebView.

mat
la source
5
J'ai essayé WKWebView mais l'avertissement apparaît toujours
muz the ax
5

Je l'ai eu après avoir ajouté Answers on Fabric à mon projet.

La suppression des données dérivées a fait l'affaire pour moi. (shift alt command k dans XCode)

Modifier un an plus tard:

Après avoir supprimé les données dérivées, quittez toujours XCode et redémarrez-le.

Dans des cas indépendants, j'ai l'impression que la suppression de données dérivées n'efface pas les caches en mémoire de XCode des données dérivées.

Gerd Castan
la source
l'avertissement est toujours là MAIS l'application ne plante plus
Dashrath
2

La réinitialisation du simulateur iOS a résolu ce problème pour moi. Simulateur -> Réinitialiser le contenu et les paramètres.

Eric Mentele
la source
Je suis arrivé à la même conclusion et cela a fonctionné pour moi aussi.
Franz
0

Dans mon cas, cet avertissement a commencé à apparaître après l'ouverture d'un deuxième projet xcode et l'exécution de la deuxième application sur le simulateur. Après être revenu à la première application, l'avertissement a commencé à apparaître. Je viens de quitter le simulateur et Xcode et j'ai rouvert mon projet. L'avertissement a disparu après cela. Si cela ne le résout pas, passez aux autres réponses. Xcode peut parfois être très difficile.

Alexander Luna
la source