Класс PLBuildVersion реализован в обеих структурах

iOS 10/Xcode 8 GM build получить ниже, никогда раньше не было на Xcode 7. Любые идеи?

objc [25161]: класс PLBuildVersion реализован как в /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/PrivateFrameworks/AssetsLibraryServices.framework/AssetsLibraryServices (0x12049a910) и /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/PrivateFrameworks/PhotoLibraryServices.framework/PhotoLibraryServices (0x1202c4210). Один из двух будет использован. Какой из них undefined.

(ПРИМЕЧАНИЕ. Кажется, что происходит только в симуляторе, не отображается на реальном устройстве).

Ответ 1

Основная идея

Основная идея проста:

Если ваше приложение (или зависимости, например, Pods) использует фреймворк, который использует явную (или неявную) PhotoLibraryServices.framework или AssetsLibraryServices.framework в качестве зависимости, Xcode предупреждает вас (даже если вы используете только один из них). Это может быть Photos/PhotosUI.framework или AssetsLibrary.framework, или другое (у меня нет полного списка зависимостей, но это возможно).

В чем проблема?

Класс с именем PLBuildVersion определяется как в PhotoLibraryServices.framework, так и в AssetsLibraryServices.framework. Имя класса уникально в Objective-C (вы не можете определить 2 класса с одинаковым именем), поэтому это undefined, который будет использоваться во время выполнения.

Однако я думаю, что это не будет проблемой, потому что оба класса имеют одинаковые методы и поля (проверяют это с помощью дизассемблера), и я думаю, что оба были скомпилированы из одного источника.

Radar уже отправлен.

Ответ 2

В соответствии с ответом сотрудника Apple на форуме разработчиков Apple:

Вы не контролируете ни один из перечисленных источников класса, поэтому вы ничего не можете или должны сделать, кроме отчета об ошибке.

Ответ 3

Мне не удалось найти способ избавиться от предупреждения, но если вы хотите предотвратить сбой приложения, вам необходимо предоставить описание, почему вы обращаетесь к фотоаппарату, фотобиблиотеке и т.д. Это новое в iOS10.

Введите следующие данные в свой Info.plist файл.

Фото

Ключ: Privacy - Photo Library Usage Description Значение: $(PRODUCT_NAME) photo use

Камера

Ключ: Privacy - Camera Usage Description Значение: $(PRODUCT_NAME) camera use

Дополнительную информацию можно найти здесь: https://iosdevcenters.blogspot.com/2016/09/infoplist-privacy-settings-in-ios-10.html

Ответ 4

Я нахожу, что вы можете получить эту ошибку, просто используя UIWebView. Мое решение заключалось в замене моего использования UIWebView на WKWebView.

Ответ 5

У меня было это после добавления ответов на Fabric в мой проект.

Удаление полученных данных помогло мне. (команда shift alt k в XCode)

Изменить год спустя:

После удаления производных данных всегда выходите из XCode и запускайте его снова.

В не связанных случаях у меня создается впечатление, что удаление полученных данных не очищает XCodes в кэшах памяти полученных данных.

Ответ 6

Сброс iOS-симулятора исправил это для меня. Симулятор → Reset Контент и настройки.

Ответ 7

В моем случае это предупреждение начало появляться после открытия второго проекта xcode и запуска второго приложения на симуляторе. После перехода на первое приложение появилось предупреждение. Я просто ушел из Simulator и Xcode и снова открыл свой проект. После этого предупреждение исчезло. Если это не решит его, переходите к другим ответам. Иногда Xcode может быть очень придирчивым.