What I believe the OP wants is to select a menu item, and have the check box change while the menu is still displayed. This is the rational for the attribute UIMenuElementAttributesKeepsMenuPresented
.
Unfortunately I cannot seem to get this to work either as the OP mentions that the UIAction is a mutable object. So the checkmark cannot be changed.
All the comments above require the menu to be re-displayed, and then the checkmarks are valid.
But what's missing, is the ability for the menu to dynamically change as the items are selected (their action).
Note: Keeping the menu presented lets you select a menu item multiple times - so when done and the menu re-displayed, the state might be checked or unchecked.
I've gone to not using the presented feature.