作者uranusjr (←这人是超级笨蛋)
看板MacDev
标题Re: [问题] id object 问题
时间Wed Dec 4 19:13:26 2013
※ 引述《s8911124 (-.-)》之铭言:
: 大家好,有个问题想请教一下,假设我有一个function如下
: - (void)copyObject:(id<ChangeProtocol>)object
: {
: Class trueClass = [object class];
: trueClass *newObject = [trueClass alloc]init]; //Error
: }
: 有没有办法只知道protocol的物件当输入,做出一个和此物件类别一样的新物件?
接近了
- (void)copyObject:(id<ChangeProtocol>)object
{
Class trueClass = [object class];
id newObject = [[trueClass alloc] init];
// Or id<ChangeProtocol> newObject = [[trueClass alloc] init];
}
你不能把 trueClass 当成 newObject 的 type name
因为 trueClass 是「存有该 class 物件的变数」
而不是「那个 class」本身
Objective-C 是 C 的 superset, 所以在这里必须遵从 C 的 syntax
在 C 里 type name 必须是静态的
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.94.61
1F:推 s8911124:谢谢指教!我懂了。 12/04 19:44
2F:推 howdiun:好文推 12/05 09:55
3F:推 tom19830924:看不懂推 12/06 09:46