看板 MacDev 關於我們 聯絡資訊
※ 引述《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