繁体   English   中英

初学者的 Objective-C 语法问题

[英]Beginner's Objective-C Syntax Question

我从 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是什么意思?

提前致谢。

这是另一个 class 的定义。 在大多数情况下,这将在一个单独的文件中,但也可以在一个文件中定义多个类,特别是如果它们密切相关。

CompositeSubviewBasedApplicationCellContentView可能不被任何类使用,除了CompositeSubviewBasedApplicationCell ,所以它不需要有自己的 header 文件。

CompositeSubviewBasedApplicationCellCompositeSubviewBasedApplicationCellContentView是两个不同的类。

我不太明白为什么在实现文件中有另一个@interface 声明。 我认为这是一种声明私有实例变量的方式。 我对吗?

是的,这是使 class 完全私有的一种方法。 如果有人希望它是部分私有的,他们可以像这样在实现文件中扩展它:

@interface CompositeSubviewBasedApplicationCell()

@end

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM