Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 有些方法没有在.h文件中声明_Objective C - Fatal编程技术网

Objective c 有些方法没有在.h文件中声明

Objective c 有些方法没有在.h文件中声明,objective-c,Objective C,我正在翻阅“Big Nerds Ranch”Objective-C一书,注意到在其中一章中,他们设置了一个观察者来监听时区的变化,他们在.m文件中创建了一个名为zoneChanged的方法,但它不需要在.h中声明?如何在不声明的情况下使用方法?是因为它只会被观察者触发吗 我了解到,如果在.m文件中声明一个方法,那么它将是私有的,但是在.m文件中似乎根本没有声明它 如何在不声明的情况下使用方法 他们所做的是直接提供定义本身。问题是,如果未在头文件中声明,则依赖于此文件的任何其他文件都不知道zone

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

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

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

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


至于编译器,它应该知道当前编译单元中的函数是什么,否则编译器会抱怨。如果您正向声明函数,则向编译器承诺定义在别处,但可能在调用点之前,也可能不在调用点之前。如果您不提供定义,链接器会抱怨。

那么,因为zoneChanged仅在该文件中作为观察者使用,而不被其他文件使用,所以不需要声明它?