AUv3 - iOS - jassert for Apple's built-in AUv3s

Hi folks,

iOS AUv3 host app - develop latest.

Selecting one of Apple’s built-in plug-ins (Apple AUMIDISynth, AUReverb2 etc.).

Fires this code:

AudioProcessorEditor* AudioProcessor::createEditorIfNeeded()

This asserts here, but it displays just fine!

    if (ed != nullptr)
        // you must give your editor comp a size before returning it..
        jassert (ed->getWidth() > 0 && ed->getHeight() > 0);
        activeEditor = ed;

Hoping this helps!


I haven’t been able to reproduce this exactly in the AudioPluginHost.

Creating an instance of AUMIDISynth and then tapping to display the editor shows JUCE’s generic editor, without triggering any assertions. This is because the AudioPluginHost will only create a custom editor if hasEditor returns true, and will create a generic editor otherwise.

If you are not already doing so, I would recommend that you check hasEditor before attempting to create a new editor instance in your host.

If I modify the host to create the editor directly, without first checking hasEditor, then I hit the assertion that you mentioned, but the editor is created with a size of zero and does not display. If I further modify the host to force a non-zero size, then the editor displays as a plain white square with no controls.

Which editor do you see at the moment? Is it the generic JUCE-provided editor, or something else?

Hi @reuk good point, but luckily I’m already calling createEditorIfNeeded() first.

FWIW, this is in my own host app that I’ve been working on.

I didn’t think to try using the Audio Plugin Host demo built for iOS - so that makes me think it must be something I’m doing! However, it is fine on both macOS and Windows

Looks like I’d not spotted this assertion before because I’d temporarily modified jassert at some point!


Sorry, forgot to say. The JUCE-provided editor. HTH! Pete