2013-04-30 44 views
0

我發現很難相信沒有straightforward的方式來聲明其在.m文件中的受保護屬性(以避免使用只有子類需要了解的變量來污染.h文件)。有沒有一種方法讓baseClass聲明受保護的變量而不污染.h文件?

代碼來表達,我想做到這樣的事:

// SuperClass.h 
NOTHING! 

// SuperClass.m 
@interface SuperClass 
@property (nonatomic, retain) variable; 
@end 

// SubClass.m 
// do something with variable 

更新:這種在UIGestureRecognizer發生的..看subclassing notes

您可以創建一個UIGestureRecognizer識別 獨特手勢的子類,例如「複選標記」手勢。如果您要創建這樣一個具體的手勢識別器,請確保導入 UIGestureRecognizerSubclass.h頭文件。該標題聲明 子類必須覆蓋,調用, 或重置的所有方法和屬性。

Carl Veazey:基本想法是,所有的屬性/方法的子類應該知道的被封裝在一個單獨的.h文件中。我想這解決了一個不同的方式污染問題。

+0

您的派生類究竟如何知道'm'文件中的內容? '.h'和'.m'文件的整個想法是提供一個*定義*然後一個隱藏*實現*。 – 2013-04-30 08:56:24

+0

我想我明白你在說什麼..所以,讓我們說,公司x正在銷售一段代碼,他們只顯示.h文件並隱藏其他所有內容..這段代碼的使用者必須知道什麼變量/方法他們可以繼承.. – abbood 2013-04-30 09:00:26

+0

@ Moo-Juice請參見 – abbood 2013-04-30 12:14:28

回答

0

您可以在.m類中實現類別。

+1

不好足夠..你不能保存實例變量的類別沒有一些可怕的工作 – abbood 2013-04-30 08:59:00

+0

[可怕的工作](http:// stackoverflow。com/a/4147242/766570)我的意思是[關聯參考](https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ObjCRuntimeRef/Reference/reference.html#//apple_ref/doc/ UID/TP40001418-CH3g-SW5) – abbood 2013-04-30 12:16:07

相關問題