Re: [問題] 類別變數
※ 引述《leondemon (狗狗)》之銘言:
: 當需要一個物件有一個變數是一個類別的時候 要怎麼宣告?
:
: 如果只是宣告Class aClassObject;
: 則aClassObject可以設定為任何類別物件
: 但是我今天希望限制aClassObject是某組類別 (將會使用到多型)
:
: 例如 我希望aClassObject是任何繼承UIView的類別物件
: 這樣我可以動態決定要對哪個class object送message....
:
: 這有辦法做到嗎?
: --
: ※ 發信站: 批踢踢實業坊(ptt.cc)
: ◆ From: 203.77.52.127
: 推 Blueshiva:UIView *aView; 05/30 01:15
: 這個要怎麼宣告呢?
: 目前想到的解法是...
:
: 用id <UniqueProtocolName> aClassObject;來宣告
:
: 並且目標類別會confirm這個protocol (包含其subclasses)
:
: 這樣該我就可以限定一個類別物件是某群類別
:
:
: 但缺點是aClassObject應該也可以是instance object
:
:
: 不知道有沒有更好的方法?
:
其實不太懂你要幹嘛...
我原先的理解是,你要在某個物件裡面存某個物件,而這個物件都是UIView子類別
而你有可能會存入不同的子類別,然後用多型的概念 (其實應該是 overloading)
能夠根據實際的物件類別做不同的事,這很簡單,而且應該算是物件導向的基本...
@interface MYObject : NSObject {
UIView *aView;
}
這樣就搞定了,所有 UIView 的子類別都可以放進來,而對 aView 傳任何 message
都會去呼叫實際那個物件的 method。
不過你又講到類別的方法,難道你是希望在物件裡面有個變數儲存的是某個類別?
基本上是不會這樣用的...而且這樣用的目的,我唯一想到的是你要呼叫類別的
method,不過這樣還是不需要用 Class aClassObject; 這種宣告,你還是應該用
UIView aView; 的宣告,然後在你需要呼叫類別方法的地方這樣用
Class aClassObject = [aView class];
或者直接 UIView *realView = [[aView class] viewWithXXXX:oooo....];
至於 protocol....好像又更無關了一些,參考看看吧。
--
Luna quieres ser madre
y no encuentras querer
que te haga mujer
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 112.104.95.143
討論串 (同標題文章)
MacDev 近期熱門文章
PTT數位生活區 即時熱門文章