在@interface,扩展中声明方法或根本不声明的方法

时间:2012-06-13 01:29:04

标签: objective-c methods declaration

我一直在学习Objective-C中的面向对象编程,我对方法声明和实现有点困惑。

在我学习的一些讲座中,教授在.h文件中声明了公共方法,然后在.m文件中实现它们;或者他可以在.m文件中声明它们是私有的,并且它们在@implementation ClassViewController部分中实现它们。

但是,有时他根本不会声明方法,只是跳到@implementation ClassViewController部分的方法实现。

如何区分公共或私人的地方,或者根本不需要申报任何内容?

2 个答案:

答案 0 :(得分:2)

当您希望外部类可以访问该方法时,应该声明公开,否则私有。如果覆盖它,则在超类中声明的方法不需要在它的子类中再次声明。至于在没有任何先前声明的情况下实现的方法,仍然可以调用该方法,但它只对文件中它下面的方法“可见”,否则会抛出警告。因此,很少这样做(它是私有声明的),但if方法是否为@selector的目标除外。

答案 1 :(得分:1)

简短的回答是所有方法都应该公开(公开或私下)。

但我怀疑你实际上看到你的教授所做的是覆盖了一个在超类中已经声明的方法。

因此,例如,如果要在CustomViewController中覆盖viewDidLoad,则不会再次声明viewDidLoad,因为该方法已在UIViewController(超类)的标头中声明。

您只需转到子类的实现并编写viewDidLoad的实现,它将覆盖您继承的实现。如果你再去观看演讲,我猜这就是你所看到的。