[xcode] PLBuildVersion 클래스는 두 프레임 워크 모두에서 구현됩니다.

iOS 10 / Xcode 8 GM 빌드는 아래 코드를 얻었지만 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). 둘 중 하나가 사용됩니다. 어느 것이 정의되지 않았습니다.

(참고 : 시뮬레이터에서만 발생하고 실제 장치에는 나타나지 않습니다).



답변

주요 아이디어

주요 아이디어는 간단합니다.

앱 (또는 포드와 같은 종속성)이 명시 적 (또는 암시 적) PhotoLibraryServices.framework또는 AssetsLibraryServices.framework종속성 을 사용하는 프레임 워크를 사용 하는 경우 Xcode가 경고를 표시합니다 (둘 중 하나만 사용하더라도). Photos/PhotosUI.framework또는 AssetsLibrary.framework또는 다른 것일 수 있습니다 (종속 종속성의 전체 목록이 없지만 가능합니다).

무엇이 문제입니까?

이름 PLBuildVersion이있는 클래스 는 PhotoLibraryServices.framework및 에 모두 정의되어 있습니다 AssetsLibraryServices.framework. 클래스 이름은 Objective-C에서 고유하므로 (같은 이름으로 2 개의 클래스를 정의 할 수 없음) 런타임에 어떤 클래스를 사용할지 정의되지 않습니다.

그러나 두 클래스 모두 동일한 메소드와 필드를 가지고 있기 때문에 문제가되지 않을 것이라고 생각합니다 (디스어셈블러로 확인). 두 클래스가 동일한 소스에서 컴파일 된 것 같습니다.

레이더 가 이미 전송되었습니다.


답변

Apple 개발자 포럼의 Apple 직원의 답변에 따라 :

나열된 클래스 소스 중 하나를 제어 할 수 없으므로 버그보고 외에는 할 수 있거나해야 할 일은 없습니다.


답변

경고를 제거하는 방법을 찾을 수 없었지만 앱이 충돌하는 것을 방지하려면 카메라, 사진 라이브러리 등에 액세스하는 이유에 대한 설명을 제공해야합니다. 이것은 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


답변

UIWebView를 사용하면이 오류가 발생할 수 있습니다. 내 솔루션은 UIWebView 사용을 WKWebView로 바꾸는 것이 었습니다.


답변

내 프로젝트에 Answer on Fabric을 추가 한 후에 이것을했습니다.

파생 데이터를 삭제하면 속임수가되었습니다. (XCode에서 shift alt 명령 k)

1 년 후 편집 :

파생 된 데이터를 삭제 한 후에는 항상 XCode를 종료하고 다시 시작하십시오.

관련이없는 경우 파생 데이터를 삭제해도 파생 데이터의 메모리 캐시에서 XCode가 지워지지 않습니다.


답변

iOS 시뮬레이터를 재설정하면이 문제가 해결되었습니다. 시뮬레이터-> 내용 및 설정 재설정.


답변

필자의 경우이 경고는 두 번째 xcode 프로젝트를 열고 시뮬레이터에서 두 번째 앱을 실행 한 후에 나타납니다. 첫 번째 앱으로 다시 변경 한 후 경고가 표시되기 시작했습니다. 방금 Simulator와 Xcode를 종료하고 프로젝트를 다시 열었습니다. 그 후 경고가 사라졌습니다. 그래도 해결되지 않으면 다른 답변을 진행하십시오. Xcode는 때때로 까다로울 수 있습니다.