Я хочу використовувати селектор в екземплярі NSObject без необхідності впровадженого протоколу. Наприклад, існує метод категорії, який повинен встановлювати властивість помилки, якщо екземпляр NSObject, на який він викликається, підтримує це. Це код, і код працює за призначенням:
if ([self respondsToSelector:@selector(setError:)])
{
[self performSelector:@selector(setError:) withObject:[NSError errorWithDomain:@"SomeDomain" code:1 userInfo:nil]];
}
Однак компілятор не бачить методу setError: підпис, тому він дає попередження для кожного рядка, що містить @selector(setError:)
фрагмент:
Undeclared selector 'setError:'
Я не хочу оголошувати протокол, щоб позбутися цього попередження, тому що я не хочу, щоб усі класи, які можуть використовувати це, реалізували щось особливе. Просто за умовою я хочу, щоб вони мали setError:
метод або властивість.
Це можливо? Як?
Ура,
ЕП