Синтаксис Вопрос для начинающих в Objective-C - PullRequest
0 голосов
/ 10 июля 2011

Я натолкнулся на следующие фрагменты кода из документации Apple.

Интерфейс довольно прост:

#import <Foundation/Foundation.h>
#import "ApplicationCell.h"

@interface CompositeSubviewBasedApplicationCell : ApplicationCell {
        UIView *cellContentView;
}
@end

Реализация:

#import "CompositeSubviewBasedApplicationCell.h"

@interface CompositeSubviewBasedApplicationCellContentView : UIView {
    ApplicationCell *_cell;
    BOOL _highlighted;
}

@end

@implementation CompositeSubviewBasedApplicationCellContentView
//not important, abbreviated...
@end

Я не могу понять, почему в файле реализации есть еще одно объявление @interface. Я предполагаю, что это способ объявления частной переменной экземпляра. Я прав?

И поскольку интерфейс уже сказал, что CompositeSubviewBasedApplicationCell расширяет ApplicationCell, что означает CompositeSubviewBasedApplicationCellContentView : UIView?

Заранее спасибо.

Ответы [ 2 ]

4 голосов
/ 10 июля 2011

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

CompositeSubviewBasedApplicationCellContentView, вероятно, не используется никакими классами, кроме CompositeSubviewBasedApplicationCell, поэтому ему не нужно иметь собственный заголовочный файл.

1 голос
/ 10 июля 2011

CompositeSubviewBasedApplicationCell и CompositeSubviewBasedApplicationCellContentView - это два разных класса.

Я не могу понять, почему в файле реализации есть еще одно объявление @interface. Я предполагаю, что это способ объявления частной переменной экземпляра. Я прав?

Да, это способ сделать класс полностью приватным. Если кто-то хочет, чтобы он был частично закрытым, он мог бы просто расширить его в файле реализации следующим образом:

@interface CompositeSubviewBasedApplicationCell()

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