什么是接口中的优选类别或私有属性

时间:2011-12-02 09:34:46

标签: objective-c ios xcode4

什么是优选的,是类中属性的干净解决方案。在接口定义(.h文件)中使用类别(匿名)或@private批注。 其他类不应继承这些属性。

BR, mybecks

2 个答案:

答案 0 :(得分:1)

类别和@private是两回事。类别扩展了可以向类添加方法的类,而@private是其他类无法直接访问属性的地方,并且必须使用您的访问器。如果您想要子类无法访问的ivars,请在您的界面中使用@private。

@interface MyClass : NSObject
{
@private
int num; //private attribute where subclass can't access
}

答案 1 :(得分:1)

首先阅读此内容以了解@private修饰符What does "@private" mean in Objective-C?

然后回答你的问题。

匿名类别称为class extension,这是我用来保持我的API干净并且不公开发布我的ivars的方法。

e.g

// .h
@interface MyClass : NSObject

@end

// .m
@interface MyClass ()

@property (nonatomic, strong) NSDate *someDateImWorkingWith;

@end

@implementation MyClass

@synthesize someDateImWorkingWith = _someDateImWorkingWith;

@end

结果我在我的班级中使用了NSDate *someDateImWorkingWith但是没有人导入我的标题甚至不知道它是否存在而不需要进行一些挖掘。这对我来说很有效,你的milage可能会有所不同。