* .h和* .m文件中的两个接口

时间:2012-03-06 19:58:35

标签: objective-c ios cocoa-touch class-extensions

对不起我的英语,让我的心说话:) 在我工作的一个项目中,我注意到了一个有趣的时刻。

在* .h文件声明的接口:

@interface FrontViewController : UIViewController
...
@end

在* .m文件中我找到了另一个界面。

@interface FrontViewController()

// Private Properties:
@property (retain, nonatomic) UIPanGestureRecognizer *navigationBarPanGestureRecognizer;

// Private Methods:
- (IBAction)pushExample:(id)sender;

@end

@implementation FrontViewController
...
@end

为什么需要它?那有什么意义呢? - 我认为这是为了方便。是

2 个答案:

答案 0 :(得分:6)

这是一个类扩展。它通常用于为类声明私有方法和属性。

了解它here

答案 1 :(得分:3)

这是一个类扩展。它允许您为类声明“私有”方法和属性,即使您无权访问源。主要用途是不将这些方法公开为接口的一部分。与大多数语言不同,这些方法是运行时可发现的,因此这些方法的值在IDE自动完成中,而不是阻止类的消费者调用隐藏方法,这就是我将私有引用的原因。可以在没有声明的情况下简单地在实现中定义方法,但是它们必须在它们被使用的任何地方之上实现。将它们声明为扩展可以防止出现此问题。

如果扩展名被命名,那么它就成为一个类别,可用于在几个文件中分发您的类实现。