Два интерфейса в файлах * .h и * .m - PullRequest
4 голосов
/ 06 марта 2012

Извините за мой английский, пусть говорят от моего сердца :) В одном проекте, над которым я работаю, я заметил интересный момент.

В * .h файле объявлен интерфейс:

@interface FrontViewController : UIViewController
...
@end

И в * .m файле я нашел другой интерфейс.

@interface FrontViewController()

// Private Properties:
@property (retain, nonatomic) UIPanGestureRecognizer *navigationBarPanGestureRecognizer;

// Private Methods:
- (IBAction)pushExample:(id)sender;

@end

@implementation FrontViewController
...
@end

Зачем это нужно? И какой в ​​этом смысл? -Я думаю, что это для удобства. Да?

Ответы [ 2 ]

6 голосов
/ 07 марта 2012

Это расширение класса.Обычно он используется для объявления частных методов и свойств класса.

Подробнее об этом здесь .

3 голосов
/ 07 марта 2012

Это расширение класса. Это позволяет вам объявлять "приватные" методы и свойства для класса, даже если у вас нет доступа к источнику. Основное использование - не предоставлять эти методы как часть интерфейса. В отличие от большинства языков, эти методы могут быть обнаружены во время выполнения, поэтому их значение заключается в автозаполнении IDE, а не в том, чтобы не мешать потребителям вашего класса вызывать скрытые методы, поэтому я помещаю private в кавычки. Можно просто определить методы в реализации без объявления, но тогда они должны быть реализованы выше любых мест, где они используются. Объявление их как расширения предотвращает эту проблему.

Если расширение названо, оно становится категорией, которую можно использовать для распределения реализации вашего класса по нескольким файлам.

...