在实现文件中声明接口(Objective-C)
在ox xCode(4.3)的最后一个版本中,我已经看到了在.m文件中进行接口声明的预定义模板(比如我们的Master / Detail模板)。 例如,在文件MyFile.h中有:
@interface MyFile @property (nonatomic, retain) NSString *someProp; @end
在MyFile.m文件中有:
@implementation MyFile @interface MyFile { NSString * anotherProp; } - (id) init...
为什么这样做呢? 为什么anotherProp没有被声明为MyFile.h文件?
提前致谢
那么它没有这样声明,但这样: –
@interface ClassName() { Declarations; } Methods; @end
这些被称为类扩展。它们类似于类别,但是只能在类的实现中声明,而不是在任何其他类中使用。扩展的使用是重新声明属性是public或readwrite,如果需要也声明新属性。只需允许您在@interface以外的地方声明属性和variables,以便名称扩展名。
由于它们使得方法公开和类的数据隐藏能力得到补偿,但是类扩展有效地扩展了类的主要接口,所声明的方法与类中公共方法声明的方法具有相同的要求接口。