在实现文件中声明接口(Objective-C)

rai*_*212 4 objective-c ios

在上一个版本的ox xCode(4.3)中,我看到了预定义模板(例如我们的主/明细模板),其中在.m文件中进行了接口声明.例如,在文件MyFile.h中有:

@interface MyFile

@property (nonatomic, retain) NSString *someProp;

@end
Run Code Online (Sandbox Code Playgroud)

在MyFile.m文件中有:

@implementation MyFile

@interface MyFile {
    NSString * anotherProp;
}

- (id) init...
Run Code Online (Sandbox Code Playgroud)

为什么这样做?为什么没有将anotherProp声明为MyFile.h文件?

提前致谢

Abh*_*ngh 5

好吧,它没有这样宣布,但这样: -

@interface ClassName() {

    Declarations;

}

Methods;

@end
Run Code Online (Sandbox Code Playgroud)

这些被称为类扩展.它们类似于类别,但只能在类的实现中声明,而不能在任何其他类中声明.扩展的使用是重新声明属于public或readwrite的属性,如果需要也声明更新的属性.只需允许您在@interface以外的位置声明属性和变量,因此名称为extensios.

它被用来解决类别问题,因为它们使方法公开并且类的数据隐藏能力得到补偿,但类扩展有效地扩展了类的主要接口,声明的方法具有与类的公共主要类中声明的方法相同的要求.接口.