我在Objective-C上很新,我有一个问题:
我已经浏览了一些Apple的示例代码并找到了以下内容:
在文件顶部,我发现使用了Objective-C类别
@interface EAGLView (EAGLViewPrivate)
- (BOOL)createFramebuffer;
- (void)destroyFramebuffer;
@end
@interface EAGLView (EAGLViewSprite)
- (void)setupView;
@end
在此之后,开始实施EAGLView类。
这里的类别的真正目的是什么,因为上面的3个函数也可以直接在头文件中定义?
Thx
答案 0 :(得分:6)
如第一个类别的名称(“EAGLViewPrivate”)所示,在.m文件中声明这些方法是一种模拟私有方法的方法。 Objective-C没有对私有方法的真正支持,但由于这些没有在.h文件中声明,编译器会在.m文件中声明它们被试图调用它们的代码时发出警告。
现在更常见的是类扩展(类别的特殊情况),主要是因为如果在类的@implementation块中没有实现“私有”方法,则使用类扩展会导致编译器发出警告。类扩展是Objective-C 2.0中的一项新功能,因此在旧代码中,您经常会看到名称中包含private的类别,就像您发布的代码一样。意图是一样的。