2011-11-17 51 views
1

Like:哪種方法可以爲Objective-C中的類定義私有方法?

@interface ClassXXName(private) 
- (void) xxxfunctions 
@end 

或用戶分類方法?

+0

本質上,你不能。請參閱http://stackoverflow.com/q/172598/591801以獲得良好的深入解答。 – brianestey

+0

基本上,您將類別(.h和.m部分)添加到類的.m文件以描述新方法。相對比較直接,並且與Objective-C的其餘部分相比,確實沒有什麼特別之處。 –

回答

3

@interface Foo()在接口Foo上創建一個類擴展(我站得更正,道具到皮包),就像添加到接口的附加方法一樣。有些人還使用@interafce Foo(Private)(category),而不是使用()的類擴展。這更像是從課堂外向班級「注入」新方法。

在.m文件中放置它只是讓其他東西不會在.h文件中「看到它」,但就是這樣。基本上,人們通常在.m文件中使用類別或類別擴展來指定私有接口,但它們也用於諸如UIKit使用類別之類的內容,以將行和部分公共方法添加到NSIndexPath。 (這可能會讓人困惑)

你不需要用這種方法定義私有方法,但是如果你有一個名爲bar的方法,在源文件中定義foo之前調用方法foo,你會得到一個編譯器警告類似「對象自我可能不會響應foo」。在定義bar或任何其他foo調用代碼之前,您可以通過定義foo來擺脫它。這與簡單的C和函數是一樣的。

就像Ole說的那樣,這不會阻止任何人調用私有方法,它只是聲明你的意圖是它們是私有的,並且導致編譯器即使導入.h文件也會生成「可能不迴應」警告。

相關問題