Re: [問題] 類別變數

看板MacDev作者 (龍野南雲)時間15年前 (2010/05/31 00:24), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/5 (看更多)
※ 引述《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
文章代碼(AID): #1C0f4s-G (MacDev)
討論串 (同標題文章)
本文引述了以下文章的的內容:
1
3
以下文章回應了本文
完整討論串 (本文為第 3 之 5 篇):
1
3
文章代碼(AID): #1C0f4s-G (MacDev)