类的.m文件中没有名称的类别

时间:2012-02-20 08:16:08

标签: iphone objective-c ios

在同一个班级的@interface myClass () ... @end文件中创建这样的类别意味着什么:.m ?此类别可能包含方法和属性,为什么不直接在类的.h文件中添加这些方法和属性?

提前谢谢。

3 个答案:

答案 0 :(得分:2)

这基本上是Objective-C缺乏私有方法的解决方法。您将类放在那里以将其隐藏在类的用户中。他们在技术上仍然可以使用它们(虽然它们会收到警告),但如果他们不了解它们,它们可能不会。但

答案 1 :(得分:2)

有时候,当我有私人方法时,我会这样做。

因为,如果方法没有在头文件中定义,当你在实现中调用它时,你会收到一个警告,(你的方法代码高于你调用的代码)。

像这样:Instance method '-XXX' not found (return type defaults to 'id')

所以,没有警告,我把一个方法定义在一个类别中,也许我会写一个@interface myClass(私有)。

答案 2 :(得分:1)

如果括号中没有名称,则为类扩展名。如果您定义名称,那么它就是一个类别。

执行此操作的最常见原因是隐藏实例变量和方法。使看起来是私人的。