我注意到Objective-c类的各种@interface
声明。我想了解为什么开发人员通过以下方式声明@interface
:
// in the .h file
@interface MyClass : NSObject
// ...
@end
// in the .m file (what's the purpose of the parens?)
@interface MyClass ()
// more property declarations which seem like they can go in the .h file
@end
// again in the .m file (what's the purpose of private?)
@interface MyClass (Private)
// some method declarations
@end
答案 0 :(得分:5)
这只是一个普通的class interface,继承自NSObject,你声明了ivars,属性和方法
// in the .h file
@interface MyClass : NSObject
// ...
@end
以下两个是categories,它们允许您向类添加方法。但它不是子类(不要声明具有相同名称的方法,因为您将无法访问原始方法)。如果您有一个命名的接口类别(如@interface MyClass (Private)
),则应在@implementation MyClass (Private)
中提供实现,对于未命名的类别(也称为扩展),可以照常提供实现。请注意,扩展还允许您将ivars添加到类中,而(命名)类别则不允许。
// in the .m file (what's the purpose of the parens?)
@interface MyClass ()
// more property declarations which seem like they can go in the .h file
@end
// again in the .m file (what's the purpose of private?)
@interface MyClass (Private)
// some method declarations
@end
答案 1 :(得分:2)
它用于声明私有方法。
此回复详细说明了这一点:What are best practices that you use when writing Objective-C and Cocoa?
答案 2 :(得分:-1)
.m
文件中的内容是私有的。 parens用于类别,因此您可以将代码分类为类别以使其更具可读性。因为代码在.m
和私有,他们称之为私有类别。