performSelector выдает недопустимый аргумент, почему?
-
21-12-2019 - |
Вопрос
Эта строка кода работает отлично
[self explodeBomb:obj];
но если я заменю его следующей строкой, я получу исключение NSInvalidArgument, причиной которого является нераспознанный селектор.
[self performSelector:@selector(explodeBomb) withObject:obj ];
Определение этого метода заключается в следующем:
-(void)explodeBomb:(SKNode *)bomb
Я знаю, это, должно быть, из-за того, что я не понимаю чего-то фундаментального.Но почему я могу вызвать метод напрямую без проблем, но когда я пытаюсь использовать performSelector
он взрывается?Для записи obj определяется как идентификатор.Я попытался изменить сигнатуру explodeBomb, чтобы она принимала идентификатор, а затем явно приводила его внутри метода, но это привело к тому же исключению.Кто-нибудь знает, какого черта я делаю не так?
Решение
Использование :
и напишите, как показано ниже
[self performSelector:@selector(explodeBomb:) withObject:obj ];
Поскольку ваш метод explodeBomb
имеет аргумент, поэтому вы должны указать :