La clase PLBuildVersion se implementa en ambos marcos

iOS 10 / Xcode 8 GM build consiguiendo lo siguiente, nunca antes en Xcode 7. ¿Alguna idea?

objc [25161]: la clase PLBuildVersion se implementa en /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/PrivateFrameworks/AssetsLibraryServices.framework/AssetsLibraryServices (0x12049a910) y /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/PrivateFrameworks/PhotoLibraryServices.framework/PhotoLibraryServices (0x1202c4210). Uno de los dos será usado. Cuál es indefinido

(NOTA: solo parece suceder en el simulador, no aparece en el dispositivo real).

Idea principal

La idea principal es simple:

Si su aplicación (o dependencias, como Pods) usa framework, que usa PhotoLibraryServices.framework explícito (o implícito) o AssetsLibraryServices.framework como dependencia, Xcode lo advierte (incluso si está utilizando solo uno de ellos). Puede ser Photos/PhotosUI.framework o AssetsLibrary.framework u otro (no tengo una lista completa de dependencias, pero es posible).

¿Cuál es el problema?

La clase con nombre PLBuildVersion se define tanto en PhotoLibraryServices.framework como en AssetsLibraryServices.framework . El nombre de la clase es único en Objective-C (no se pueden definir 2 clases con el mismo nombre), por lo que no está definido cuál será el que se usará en el tiempo de ejecución.

Sin embargo, creo que no será un problema, ya que ambas clases tienen los mismos métodos y campos (comprobado esto con el desensamblador) y supongo que ambos fueron comstackdos de la misma fuente.

El radar ya está enviado.

Según la respuesta del empleado de Apple en el Foro de Desarrolladores de Apple :

No controlas ninguna de las fonts de la clase enumeradas, por lo que no hay nada que puedas o debas hacer, aparte de Informar un error.

No pude encontrar una manera de deshacerme de la advertencia, pero si desea evitar que la aplicación se bloquee, debe proporcionar una descripción de por qué está accediendo a la cámara, a la biblioteca de fotos, etc. Esto es nuevo en iOS10.

Ingrese lo siguiente en su archivo Info.plist .

Foto

Clave: Privacy - Photo Library Usage Description Valor: $(PRODUCT_NAME) photo use

Cámara

Clave: Privacy - Camera Usage Description Valor: Privacy - Camera Usage Description $(PRODUCT_NAME) camera use

Puede encontrar más información aquí: https://iosdevcenters.blogspot.com/2016/09/infoplist-privacy-settings-in-ios-10.html

Creo que puede obtener este error simplemente mediante el uso de UIWebView. Mi solución fue reemplazar el uso de UIWebView con WKWebView.

Lo tuve después de agregar Answers on Fabric a mi proyecto.

Eliminar los datos derivados hizo el truco para mí. (shift alt command k en XCode)

Editar un año después:

Después de eliminar los datos derivados, siempre salga de XCode y vuelva a iniciarlo.

En casos no relacionados tengo la impresión de que eliminar datos derivados no borra XCode en cachés de memoria de los datos derivados.

Restablecer el simulador de iOS solucionó esto por mí. Simulador -> Restablecer contenido y configuración.

En mi caso, esta advertencia comenzó a aparecer después de abrir un segundo proyecto xcode y ejecutar la segunda aplicación en el simulador. Después de volver a la primera aplicación, la advertencia comenzó a aparecer. Acabo de abandonar el simulador y Xcode y reabrí mi proyecto. La advertencia desapareció después de eso. Si eso no lo resuelve, proceda con las otras respuestas. Xcode puede ser muy exigente a veces.