Объявление объекта-c в двух разных местах - PullRequest
1 голос
/ 10 сентября 2010

Когда вы запускаете проект на основе SplitViewController для iPad, он создает DetailViewController. В DetailViewController.h интерфейс объявляется как обычный:

@interface DetailViewController : UIViewController <UIPopoverControllerDelegate, UISplitViewControllerDelegate> {

        UIPopoverController *popoverController;
        UIToolbar *toolbar;

        id detailItem;
        UILabel *detailDescriptionLabel;
}

Затем в файле реализации (DetailViewController.m) он объявляет некоторые другие части интерфейса:

@interface DetailViewController ()
@property (nonatomic, retain) UIPopoverController *popoverController;
- (void)configureView;
@end

Почему они это делают? Какой смысл объявлять интерфейс в двух разных местах / файлах?

Ответы [ 3 ]

4 голосов
/ 10 сентября 2010

Они создали частную категорию. Методы, определенные в .m, должны использоваться только в .m и не являются частью объявленного интерфейса в DetailViewController. Ожидается, что внешние пользователи контроллера будут вызывать только те методы, которые определены в .h, внутренние пользователи также могут использовать методы в частной категории. Также часто можно увидеть

@interface DetailViewController (Private)
3 голосов
/ 10 сентября 2010

Это расширение стандартного интерфейса дополнительными методами, которые вы можете реализовать для этой конкретной реализации, чтобы компилятор знал о них.

Подробнее см. Документацию Apple по расширениям класса .

0 голосов
/ 10 сентября 2010

Первый - это открытый интерфейс, а второй - «продолжение класса» и содержит закрытые методы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...