随着xe8 的出來,其開始支援IOS 64 的編譯了(不支援也沒辦法,從今年2月開始不支援ios 64 的應用
就不允許入住apple appstore,霸氣呀)。相信不少同學迫不及待的開始了ios64 的開發。
kbmmw 4.8 開始支援xe8,但是目前确無法直接編譯IOS64 的應用,經過分析其源碼,發現主要存在兩個
問題。
一個問題是流的seek 方法,非ios64時可以 使用
soFromBeginning = 0;
soFromCurrent = 1;
soFromEnd = 2;
來定位。例如 stream.Seek(0,sofromBeginning);
但是在IOS64 下,隻能用最新的
type
{ TStream seek origins }
TSeekOrigin = (soBeginning, soCurrent, soEnd);
來定位流,例如 stream.Seek(0,soBeginning);
後面的方法在所有平台都是通用的,是以建議以後都使用這種方法。
另外一個問題就是在kbmmw 中大量使用了longint, 但是在ios 64 下,longint 已經變成了8個位元組大小,
如圖:
是以編譯時會出現大量的錯誤,為了适應這一變化,xe8 裡面引入了新的整數類型,fixedint, 這個實作了與作業系統的無關性,
無條件就是4個位元組大小,是以通過對kbmmw 中的大量longint 暫時使用fixedint 替換,基本上就解決了這個問題。
通過上面的修改,kbmmw 基本上就可以在ios64 上編譯運作了,由于不是官方修改,不完全保證沒問題。