作者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
推 s8911124:謝謝指教!我懂了。 12/04 19:44
推 howdiun:好文推 12/05 09:55
推 tom19830924:看不懂推 12/06 09:46