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放在引号中的原因。在没有声明的情况下,可以简单地在实现中定义方法,但是必须在使用方法的任何位置之上实现方法。将它们声明为扩展可以防止这个问题。
如果扩展名是命名的,那么它将成为一个类别,可以用来将类实现分布在多个文件中。