Класс 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 может быть очень придирчивым.