I suspect that you're creating a MenuButton instance, which sets up this tap gesture recognizer, but you're not retaining the the MenuButton instance and it becomes deallocated. The result: the tap gesture recognize is calling onTapMenuButton
on an object that no longer exists.
How are you keeping hold of the MenuButton objects?