2012-12-28 45 views
1

我有一個C函數heightParameter,它是一個簡單的工具,我在我的幾個UIViewController s中使用。我只是在我的其他函數上面的每個UIViewController子類(在.m中)的主要實現中聲明瞭這一點,所以我甚至不必在頭文件中聲明它。XCode:重複的符號

出於某種原因,我在我使用它的每個其他子類中都得到了重複符號,儘管它是私人實現的。它位於每個子類的主@implementation @end塊中,不應該被其他任何東西看到,所以它是如何在全局中看到的?

回答

2

C函數名稱具有全局範圍。將其標記爲static,或者如果您希望限制該方法,請將其設爲一種方法。

+0

會不會靜態強制它是全球?我認爲靜態會在整個應用程序中實現一個實現?或者它這樣做,但允許多個實現? – RileyE

+0

這是全球*沒有*'靜態'。添加'static'將限制對該符號的訪問到單個編譯單元。這意味着您可以爲每個'.m'文件分別實施。但是,爲什麼不把它變成一種私人方法呢?這似乎是最合乎邏輯的方法。理解'static'的好參考:http://stackoverflow.com/questions/572547/what-does-static-mean-in-a-c-program –

+0

哦。那麼我想我對靜態是什麼產生了誤解。謝謝!但是通過將它變成私有的,你的意思是把它變成一個Objective-C函數嗎?或者你的意思是使它成爲Objective-C函數並將其添加到私有類別? – RileyE