我从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
是什么意思?
提前致谢。
答案 0 :(得分:4)
这是另一个类的定义。在大多数情况下,这将在一个单独的文件中,但也可以在一个文件中定义多个类,特别是如果它们密切相关。
除了CompositeSubviewBasedApplicationCellContentView
之外,任何类都可能不使用 CompositeSubviewBasedApplicationCell
,因此它不需要拥有自己的头文件。
答案 1 :(得分:1)
CompositeSubviewBasedApplicationCell
和CompositeSubviewBasedApplicationCellContentView
是两个不同的类。
我无法弄清楚为什么实现文件中还有另一个@interface声明。我假设它是一种声明私有实例变量的方法。我是对的吗?
是的,这是让课程完全私密化的一种方式。如果有人希望它是部分私有的,他们可以在实现文件中扩展它,如下所示:
@interface CompositeSubviewBasedApplicationCell()
@end