delphi的接口support_学习到的关于Delphi的接口
Delphi的接口,據(jù)說是很牛X的東西,總體感覺來說,沒有想象的那么好。很多Delphi相關(guān)的很牛的技術(shù)都沒有用過。
好吧,其實(shí)自己了解也并不多,更不用說很深層次的東西了,講一講自己經(jīng)歷的痛苦中得出來的一些東西吧。
1. 同一個(gè)對(duì)象的一種接口的地址都是一樣的。
這個(gè)當(dāng)初我也是很迷茫,在網(wǎng)上找了不少的資料,書上也基本沒有說。說白了就是接口的內(nèi)存空間的問題,接口的內(nèi)存空間是在聲明接口的時(shí)候分配的嗎,Delphi接口有自己的內(nèi)存空間嗎。其實(shí)Delphi的內(nèi)存空間是依附著對(duì)象,其實(shí)按道理上來講也確實(shí)是這樣的。但一般的情況是,把一個(gè)對(duì)象賦給一個(gè)接口之后,這個(gè)對(duì)象一般是不會(huì)自己去釋放的,這個(gè)對(duì)象的的生命的結(jié)束就是這個(gè)接口來管理了。
所以在改Bug的過程中,經(jīng)常做的一件事情就是驗(yàn)證接口的地址是否一致,如果不一致的話,肯定是有問題的。
2. 接口強(qiáng)轉(zhuǎn)
接口強(qiáng)轉(zhuǎn)有很多辦法,例如,support,as,還有直接進(jìn)行類型轉(zhuǎn)換。但是很多都是有隱患的,只有通過support的返回值判斷是否支持才是足夠安全的。所以如果沒有確切的把握一般不要用其它的辦法,還是用support吧。現(xiàn)在我越來越覺得,很有必要這樣做,這樣不管以后的變動(dòng),影響都是最小的。
而且我還遇到一個(gè)很銷魂的問題,用support轉(zhuǎn)換之后,返回已經(jīng)成功轉(zhuǎn)換了,但是接口的地址還是沒有變。這似乎是有違規(guī)律的,后來才發(fā)現(xiàn),這個(gè)接口早就已經(jīng)有問題了,在前面已經(jīng)進(jìn)行了不合法的強(qiáng)轉(zhuǎn),這樣就沒有辦法了,就會(huì)產(chǎn)生莫名其妙的問題。
3. 一種比較麻煩的接口存儲(chǔ)
如果存儲(chǔ)大量的接口的話,用List肯定訪問起來有時(shí)候是不夠方便的,可能會(huì)想到用Hash,這就會(huì)造成一些問題,可能存儲(chǔ)的時(shí)候就需要轉(zhuǎn)換為數(shù)值或其它的,而不是以接口的形式存在了,然后在取出的時(shí)候轉(zhuǎn)回來。取出來的時(shí)候肯定要進(jìn)行類型強(qiáng)轉(zhuǎn),但已經(jīng)沒有了類型的信息,所以是很不安全的。
所以必須確保,存進(jìn)去和取出來的接口是一致的,取出來之后可以再進(jìn)行其它的操作。
4. 轉(zhuǎn)換的原理
說句實(shí)話,我也不是很懂。在網(wǎng)上看到了一些相關(guān)的試驗(yàn)性的代碼,在對(duì)象的存儲(chǔ)空間里有指針指向一個(gè)接口表,其實(shí)類型的轉(zhuǎn)換都是靠這個(gè)表來實(shí)現(xiàn)的,就是接口查詢,經(jīng)常容易看到這個(gè)函數(shù)。
BTW: 居然在網(wǎng)上看到一篇韓小明的寫的從接口里獲得對(duì)象的文章,不知是不是真的這個(gè)人。 好吧,Delphi的對(duì)象確實(shí)不是一般。
總結(jié)
以上是生活随笔為你收集整理的delphi的接口support_学习到的关于Delphi的接口的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 过直线上一点画垂线图_苏教版四年级数学上
- 下一篇: XMind怎么设计家庭礼物清单? XMi