作者Blueshiva (龙野南云)
看板MacDev
标题Re: [问题] 类别变数
时间Mon May 31 00:24:19 2010
※ 引述《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