Reputation: 597
Does anyone know what happened for my iOS 11 simulator? When i launch on iOS 11, the app can't work, and says in console:
dyld: Symbol not found: _CKAccountChangedNotification
Referenced from: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/System/Library/PrivateFrameworks/CoreDuet.framework/CoreDuet
Expected in: /Users/steve/Library/Developer/Xcode/DerivedData/Cloud-bvzzwfgkjzfnzibxrwadbayiowcu/Build/Products/Debug-iphonesimulator/CloudKit.framework/CloudKit in /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/System/Library/PrivateFrameworks/CoreDuet.framework/CoreDuet"
But everything is fine when run in iOS 10 simulator or on the device with iOS 11. How can i fix this problem? Thanks in advance!
Upvotes: 1
Views: 936
Reputation: 17219
CloudKit is a system framework so your framework is interfering with other system frameworks trying to find the symbol in the real CloudKit.framework
This happens because the Simulator does not currently use a dyld shared cache (otherwise the symbols would already have been resolved to the system-provided CloudKit.framework
) and Xcode sets up the DYLD_FRAMEWORK_PATH
to point to the built products directory so it can find your frameworks even though they aren't packaged up in their final install location.
These two combined causes dyld to see your version of CloudKit.framework
when it attempts to resolve _CKAccountChangedNotification
.
The solution is to rename your framework.
Upvotes: 2