关于objective c:* .h和* .m文件中的两个接口

Two interfaces in *.h and *.m files

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

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

1
2
3
@interface FrontViewController : UIViewController
...
@end

在*.m文件中,我找到了另一个接口。

1
2
3
4
5
6
7
8
9
10
11
12
13
@interface FrontViewController()

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

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

@end

@implementation FrontViewController
...
@end

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


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

在这里阅读。


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

如果扩展名是命名的,那么它将成为一个类别,可以用来将类实现分布在多个文件中。