Я пытаюсь избавиться от предупреждения PerformSelector в соответствии с решением, описанным в этом ответе: performSelector может вызвать утечку, поскольку его селектор неизвестен
Строка, которая вызывает проблему:
if ([self.target respondsToSelector:self.action]) {
[self.target performSelector:self.action withObject:self];
}
Я попытался решить эту проблему, изменив код на:
if ([self.target respondsToSelector:self.action]) {
SEL selector = self.action;
IMP imp = [self.target methodForSelector:selector];
void (*func)(id, SEL) = (void *)imp;
func(self.target, selector);
}
Хотя оно больше не сообщает о проблеме, приложение аварийно завершает работу при вызове этого метода. Как я могу решить эту проблему? Этот вопрос не является дубликатом, потому что я прочитал другой ответ и до сих пор не могу решить проблему.