事實上我們在安卓端是可以使用c#jit的,但是我們在ios上的代碼是AOT(預先編譯,靜態編譯)的,不能用c# jit(實時編譯,即時編譯)。
ios不能用c#熱更是因為啟動了CPU的No eXecute bit,簡單說就是ios不允許更改代碼,更新代碼必須重新提安裝包進行審核,AppStore審核過的代碼才能執行。而lua解釋器(通常來說就是lua.c中的代碼)是審核過的,這才是為何lua可以運行在ios上的根本原因。
lua在unity中作為一個文本資源來使用,當我們通過tolua或者xlua調用lua代碼中某個函數時,解釋器會去對lua進行解釋,因為lua解釋器代碼允許執行,因此它會執行lua解釋后的代碼。