iosxcodemacosavfoundation

iOS-for-Mac app runs exactly once after build, then crashes on every launch with: Symbol not found: _OBJC_CLASS_$_AVPlayerView


I don't know what triggered this in a previously-running application I'm developing: When I have the build target set to "My Mac (designed for iPad)," I now must delete all the app's build materials under DerivedData to get the app to build and run exactly once. Cleaning isn't enough; I have to delete everything. I don't know what the key nugget is, but deleting SymbolCache by itself didn't change anything.

The next time, it will crash on launch without even getting to the instantiation of the application class. None of my code executes; thus I can't provide a code example of how to create the situation.

Also: If I then set my iPhone as the build target, the app will build and run repeatedly. If I then return to "My Mac (designed for iPad)," the app will again launch once and then crash on every subsequent launch.

The crash is the same every time:

dyld[3875]: Symbol not found: _OBJC_CLASS_$_AVPlayerView
  Referenced from: <D566512D-CAB4-3EA6-9B87-DBD15C6E71B3> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Library/Debugger/libViewDebuggerSupport.dylib
  Expected in:     <4C34313C-03AD-32EB-8722-8A77C64AB959> /System/iOSSupport/System/Library/Frameworks/AVKit.framework/Versions/A/AVKit

Interestingly, I haven't found any similar online reports that mention this symbol.

Has anyone seen this behavior before, where the crash only happens after the first run... and gets reset when you toggle the target type?

Call stack on crash:


Solution

  • This appears to be a known problem, although the exact error may differ. Apple developer support says:

    Recently, a similar issue could be worked around by turning off View Debugging in Xcode, so please try it on your end. To do so, select your target and click on "Edit Scheme...". Then, under Run (Debug) > Options > View Debugging, uncheck the "Enable user interface debugging" box.

    This does work to prevent the crash in my case.