某些方法未在.h文件中声明

时间:2012-01-06 23:16:11

标签: objective-c

我正在阅读“Big Nerds Ranch”Objective-C书,并在其中一章中注意到他们正在设置一个观察者来监听时区更改,他们在.m文件中创建了一个名为{{1的文件的方法但是它不需要在.h中声明?如何在不声明的情况下使用方法?是因为它只会被观察者触发吗?

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

1 个答案:

答案 0 :(得分:1)

  

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

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

就编译器而言,它应该知道当前编译单元中的函数是什么,否则编译器会抱怨。如果您转发声明该函数,您承诺编译器的定义是其他地方,但可能在调用点之前,也可能不是。如果您不提供定义,链接器会抱怨。