4

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

在 *.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

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

4

2 回答 2

6

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

在这里阅读。

于 2012-03-06T20:00:14.490 回答
3

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

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

于 2012-03-06T20:09:11.447 回答