2013-09-01 2 views
1

Я только начинаю с ObjC. Мне интересно, как узнать, глядя на код, написанный мной или из шаблона, который появляется, когда вы используете мастер для создания нового класса, как вы можете определить, переопределяет ли метод что-то.Легкий способ определить, является ли метод переопределением другого метода?

В Java вы можете отметить метод с помощью @Override, и тогда очень легко увидеть, что это переопределяет что-то. Это не является надежным, потому что @Override не является обязательным, но если я все еще не уверен, я могу просто ввести его и посмотреть, генерирует ли он ошибку.

Это единственный способ поиска источника суперкласса, или в случае рамки для чтения документации?

+0

Если вы используете Xcode, вы можете попробовать, чтобы увидеть, если редактор пытается автозаполнение сигнатуры методы, когда вы вводите его. –

+0

Вы можете использовать AppCode. Это указывает (и позволяет осуществлять навигацию) супер- и подклассы реализации метода. – jrturton

+0

Нет такой вещи, как волшебник. Это дело окон. – uchuugaka

ответ

1

Я не знаю, как это можно увидеть сразу, но вы можете проверить, отвечает ли super тому же селектору. Пример:

- (void)myMethod 
{ 
    // Temporarily add this line. If the compiler does NOT complain, 
    // "myMethod" overrides a method from some superclass. 
    [super myMethod]; 
    // ... 
} 
0

Вы можете использовать instancesRespondToSelector, чтобы увидеть, если ваш экземпляр имеет реализацию метода в его иерархии объектов.

[MyClass instancesRespondToSelector:@selector(myMethod)]; 

или в зависимости от того, какого типа проверки вам нужно сделать

[MyClassSuperClass instancesRespondToSelector:@selector(myMethod)]; 
Смежные вопросы