【正文】
案(我所知的)了。因?yàn)槟闳绻阃涋D(zhuǎn)會(huì)在第一次調(diào)用時(shí)就出錯(cuò),比較容易發(fā)現(xiàn)錯(cuò)誤(相比于使用array)。 使用Tlist來管理接口引用。 增加時(shí)要把對(duì)象轉(zhuǎn)型成Interface再轉(zhuǎn)型成Pointer,如果本來就是接口引用的話直接轉(zhuǎn)為Pointer即可。 對(duì)于沒有使用Tlist來管理的接口引用。對(duì)于接口的引用要用下面的方法手動(dòng)置為nil:Pointer(IntfRef):= nil。 另外,TInterfacedObject也實(shí)現(xiàn)了IInterface的三個(gè)方法。所以從它繼承也可以省去自己實(shí)現(xiàn)這三個(gè)方法的麻煩。但是它的_Release是這樣實(shí)現(xiàn)的: function : Integer。 begin Result := InterlockedDecrement(FRefCount)。 if Result = 0 then Destroy。 end。 接口引用的置nil會(huì)調(diào)用接口的_Release,所以有可能會(huì)把對(duì)象給釋放掉,我當(dāng)時(shí)可是被它嚇了一跳,多虧我沒用過它。也就是這樣實(shí)現(xiàn)下比從TComponent繼承帶來更大的麻煩。除非特殊用途,不建議使用。 上面對(duì)接口的所有討論,只限于普通使用的語言級(jí)的接口,沒有討論Com+接口。Delphi的這些詭異的接口的實(shí)現(xiàn),和它是從Com+接口發(fā)展而來是有很大關(guān)系的,也就是由于背負(fù)了過重的歷史包袱而作出的妥協(xié)的結(jié)果。 分享到: 上一篇:Delphi中WebService服務(wù)下一篇:第一次體驗(yàn)項(xiàng)目管理查看評(píng)論1樓 xiammy 20120625 15:28發(fā)表 [回復(fù)] 陷阱三:接口指針強(qiáng)制轉(zhuǎn)換。Delphi中一個(gè)對(duì)象的不同接口指針是不同地址的。但是表面上看不出來。寧可累死在路上,也不能閑死在家里!寧可去碰壁,也不能面壁。是狼就要練好牙,是羊就要練好腿。什么是奮斗?奮斗就是每天很難,可一年一年卻越來越容易。不奮斗就是每天都很容易,可一年一年越來越難。能干的人,不在情緒上計(jì)較,只在做事上認(rèn)真;無能的人!不在做事上認(rèn)真,只在情緒上計(jì)較。拼一個(gè)春夏秋冬!贏一個(gè)無悔人生!早安!—————獻(xiàn)給所有努力的人.學(xué)習(xí)參考