在同一个班级的@interface myClass () ... @end
文件中创建这样的类别意味着什么:.m
?此类别可能包含方法和属性,为什么不直接在类的.h
文件中添加这些方法和属性?
提前谢谢。
答案 0 :(得分:2)
这基本上是Objective-C缺乏私有方法的解决方法。您将类放在那里以将其隐藏在类的用户中。他们在技术上仍然可以使用它们(虽然它们会收到警告),但如果他们不了解它们,它们可能不会。但
答案 1 :(得分:2)
有时候,当我有私人方法时,我会这样做。
因为,如果方法没有在头文件中定义,当你在实现中调用它时,你会收到一个警告,(你的方法代码高于你调用的代码)。
像这样:Instance method '-XXX' not found (return type defaults to 'id')
所以,没有警告,我把一个方法定义在一个类别中,也许我会写一个@interface myClass(私有)。
答案 2 :(得分:1)
如果括号中没有名称,则为类扩展名。如果您定义名称,那么它就是一个类别。
执行此操作的最常见原因是隐藏实例变量和方法。使看起来是私人的。