2) Alternatively, I started modifying menu bar items in-place,
preserving the first one (which I am unable to create from
scratch). This however causes hefty flicker and sometimes the menu
bar even doesn't show any item at all (blank!). The items however,
are still there and working. Hu? Looks like the drawing of the menu
sometimes happens while modification is still in process. Pushing
the setMainMenu: call to the main thread didn't help. Also tried
itemChanged: and update messages, but with limited success. Is
there a recommended solution to avoid this "hidden menu" artefact?
This should work, but not from a non-main thread. The kind of
artefacts you mention are exactly the glitches one gets when doing
GUI stuff from a secondary thread. Are you sure you've moved all of
your menu code into the main thread? What about other GUI code?