2011-05-15 45 views
2

我移植的cpp的代碼到目標C.朋友類目標C

cpp我們可以爲friend class添加一個類到另一個類,並使用其所有的公共函數和變量。

我知道Objective C does not support friend class的概念。

如何使一類爲好友到另一個類的目標C

+1

@ron:檢查我的幫助你。 http://stackoverflow.com/questions/2241488/friend-classes-in-objective-c – Jhaliya 2011-05-15 06:04:28

+0

請在發佈之前進行搜索。 – 2011-05-15 06:27:10

回答

5

如果你有兩個緊耦合類,那麼你可以使用一些簡單的技巧,露出一個簡單的公共接口。例如,

Banana.h

@interface Banana : NSObject 
- (BOOL)isPeeled; 
@end 

Monkey.h

@interface Monkey : NSObject 
- (void)eat:(Banana *)aBanana; 
@end 

BananaPrivate.h

@interface Banana (PrivateMethods) 
- (void)peel; 
@end 

然後你Monkey.m文件可以導入BananaPrivate.h獲得私有函數。如果你正在編寫一個框架,那麼你在你的框架頭文件中不包含BananaPrivate.h

這與封裝在C中完成的方式相同。在我看來,它比friend關鍵字在C++中明顯更少,但超出瞭解釋原因的範圍。

如果您將Banana作爲類集羣實施,您也可以以這種方式公開私有成員變量,但這有點瘋狂,我不推薦它。如果你需要更緊密的類之間的耦合,你可能需要在代碼的這一部分使用C語言。