2012-01-06 69 views
0

我正在通过“Big Nerds Ranch”Objective-C书籍工作,并在其中一章中注意到他们正在设置观察者来侦听时区更改,以创建方法在名为zoneChanged的.m文件中,但它不需要在.h中声明?如何在不声明的情况下使用方法?是因为它只会被观察者触发吗?某些方法未在.h文件中声明

我读到,如果你在.m文件中声明一个方法,那么它将是私人的,但它似乎并没有在.m文件中声明。

回答

1

如何在不声明的情况下使用方法?

他们正在做的是直接提供定义本身。问题是如果它没有在头文件中声明,取决于此文件的任何其他文件都不知道zoneChanged函数存在。但是,您可以通过关键字extern关联它,这是一个不同的故事。

就编译器而言,它应该知道当前编译单元中的函数是什么,否则编译器会抱怨。如果你转发声明了函数,你有希望编译器的定义是在哪里,但可能或可能不在调用点之前。如果你不提供定义,链接器抱怨。

+0

因此,因为zoneChanged仅作为观察者使用,而不是其他文件,所以不需要声明? – Bot 2012-01-09 15:13:22

相关问题