Objective c 有些方法没有在.h文件中声明
我正在翻阅“Big Nerds Ranch”Objective-C一书,注意到在其中一章中,他们设置了一个观察者来监听时区的变化,他们在.m文件中创建了一个名为Objective c 有些方法没有在.h文件中声明,objective-c,Objective C,我正在翻阅“Big Nerds Ranch”Objective-C一书,注意到在其中一章中,他们设置了一个观察者来监听时区的变化,他们在.m文件中创建了一个名为zoneChanged的方法,但它不需要在.h中声明?如何在不声明的情况下使用方法?是因为它只会被观察者触发吗 我了解到,如果在.m文件中声明一个方法,那么它将是私有的,但是在.m文件中似乎根本没有声明它 如何在不声明的情况下使用方法 他们所做的是直接提供定义本身。问题是,如果未在头文件中声明,则依赖于此文件的任何其他文件都不知道zone
zoneChanged
的方法,但它不需要在.h中声明?如何在不声明的情况下使用方法?是因为它只会被观察者触发吗
我了解到,如果在.m文件中声明一个方法,那么它将是私有的,但是在.m文件中似乎根本没有声明它
如何在不声明的情况下使用方法
他们所做的是直接提供定义本身。问题是,如果未在头文件中声明,则依赖于此文件的任何其他文件都不知道zoneChanged
函数存在。但是,您可以通过关键字extern
链接它,这是另一个故事
至于编译器,它应该知道当前编译单元中的函数是什么,否则编译器会抱怨。如果您正向声明函数,则向编译器承诺定义在别处,但可能在调用点之前,也可能不在调用点之前。如果您不提供定义,链接器会抱怨。那么,因为zoneChanged仅在该文件中作为观察者使用,而不被其他文件使用,所以不需要声明它?