Вы получили одинаковую опечатку во всех трех вызовах создания пункта меню. Вы говорите пунктам меню, что селектор, который они должны использовать, называется doSomenthing...
(обратите внимание на ложный n в середине):
CCMenuItemImage *menuItem1 = [... selector:@selector(doSomenthingOne:)];
CCMenuItemImage *menuItem2 = [... selector:@selector(doSomenthingTwo:)];
CCMenuItemImage *menuItem3 = [... selector:@selector(doSomenthingThree:)];
но фактические имена ваших методов: doSomethingOne:
, doSomethingTwo:
и doSomethingThree:
.
Точная причина сообщения об ошибке заключается в том, что позже, когда пункт меню должен выполнить этот селектор, он попросит ваш класс сообщить ему сигнатуру метода для селектора, который вы ему дали. Поскольку вы дали элементу неправильный селектор, ваш класс не знает сигнатуру и возвращает nil
. Элемент меню пытается создать объект NSInvocation
в любом случае для выполнения его действия, что не удается, поскольку вызов не может быть создан с подписью nil
.
Исправьте опечатки, и все должно работать нормально.