У меня есть два метода в моем классеМогу ли я обнаружить: «Является ли метод перегрузки класса базового класса»?
- (void)configureWithDictionary:(NSDictionary*)dictionary;
- (void)configureWithDictionary:(NSDictionary*)dictionary withOptions:(XWTreeItemConvertationToNSDictionaryOption*)options;
И у меня есть реализация для них обоих. Так! Решение, как: «Просто добавьте NSAssert (NO, @» Вы тучную переопределить этот метод «)» не поможет = (
- (void)configureWithDictionary:(NSDictionary*)dictionary withOptions:(XWTreeItemConvertationToNSDictionaryOption*)options;
{
NSAssert(NO, @"You mast override this method"
}
Потому что у меня есть некоторый код, туда и нужно писать [super configureWithDictionary:dictionary withOptions:options];
в перегруженном методе .. Все могут использовать эти методы, но мне нужны оба! Но
Если какой-либо разработчик перегрузится -[MYClass configureWithDictionary:]
, он может «работать некорректно». Просто потому, что этот метод не вызывает времени. Поэтому мне нужно что-то написать на консоли. Например: «Пожалуйста, перегрузите метод: -[MYClass configureWithDictionary:withOptions:]
». И я хочу обрабатывать его только один раз в этом методе:
+ (void)initialize
{
if (self == [self class]) {
}
}
Но я не могу найти решение (в документации/google/stackoverflow). И не может обработать: «Использует ли разработчик метод перегрузки базового класса».
Может быть, есть лучшее решение. Но я думаю, что это должно быть лучше. Если у вас есть другие идеи. Пожалуйста, напишите bellow =)
Я нашел только метод: +[NSObject instancesRespondToSelector]
и, конечно, знаю о -[NSObject respondsToSelector:]
, но, как вы знаете, он всегда возвращает ДА. Мне нужно почти то же самое, но для текущего класса, игнорирующего базу.
PS. В любом случае спасибо за внимание. Ссылка на документацию или какую-то статью будет очень полезной.
Это хороший трюк. Я буду использовать его в своей работе. Спасибо =)! Но это не поможет найти проблему для иностранного разработчика. Sad = ( – ZevsVU
Это решение выгодно проверять на + инициализацию, потому что он не сможет скомпилировать, а не прервать во время выполнения. Ошибка компиляции подскажет пользователю, что именно делать. –