Let's examine this log: objc[39953]: Class _TtC10KingfisherP33_6AA794C9C370CDB07604B4D8B99AEAA312BundleFinder is implemented in both /Users/Name/Library/Developer/Xcode/DerivedData/TestApp-capvhjiqxrdgdnbevpkajicnjpcs/Build/Products/Debug-iphonesimulator/WallpaperKit.framework/WallpaperKit (0x100e8bbf8) and /Users/Name/Library/Developer/CoreSimulator/Devices/E0AF13C2-874C-47B9-B864-72AF3E4D5D4B/data/Containers/Bundle/Application/AF32011A-92E7-4E26-9A97-9F0C25C07863/TestApp.app/TestApp.debug.dylib (0x101a543b0). This may cause spurious casting failures and mysterious crashes. One of the duplicates must be removed or renamed. You have mangled Swift class names there, and they exist in two places, so the system doesn't know which implementation to use. While the crux of your question is Why are these symbols still given an _implementationOnly import, there's something subtle here — this log is being generated by the Objective-C runtime, for a Swift class — notice the system logging this is named objc at
Topic:
Developer Tools & Services
SubTopic:
Xcode
Tags: