2012-01-06 74 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

相關問題