Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/98.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
IOS:AOT提前,是什么?_Ios_Xamarin_Xamarin.ios - Fatal编程技术网

IOS:AOT提前,是什么?

IOS:AOT提前,是什么?,ios,xamarin,xamarin.ios,Ios,Xamarin,Xamarin.ios,我读过Xamarin的一篇文章,偶然发现了一个特别的计算机科学词汇:提前。 根据一些google搜索结果,此AOT不允许在运行时生成代码。 这是否意味着它不支持动态内容 我知道这个问题可能很愚蠢,我对IOS一无所知,希望能从这里得到一些答案。谢谢首先,动态的定义是什么?对于一般公众来说,动态代码意味着应用程序可以在运行时更改功能。对于iOS平台,对二进制文件进行签名以防止恶意软件。苹果也不喜欢可以在运行时加载功能的应用程序 与动态代码本身无关。这与中间语言有关。中间语言的最大例子是Java字节码

我读过Xamarin的一篇文章,偶然发现了一个特别的计算机科学词汇:提前。 根据一些google搜索结果,此AOT不允许在运行时生成代码。 这是否意味着它不支持动态内容


我知道这个问题可能很愚蠢,我对IOS一无所知,希望能从这里得到一些答案。谢谢

首先,动态的定义是什么?对于一般公众来说,动态代码意味着应用程序可以在运行时更改功能。对于iOS平台,对二进制文件进行签名以防止恶意软件。苹果也不喜欢可以在运行时加载功能的应用程序

与动态代码本身无关。这与中间语言有关。中间语言的最大例子是Java字节码;编译一次,在任何地方运行。当Java应用程序正在执行时,编译的代码是JIT到本机机器代码的。AOT编译器只是提前做了,以节省时间


对于iOS平台,Xcode将Objective-C编译为设备的本机二进制文件

另一种看待这个问题的方式是用一个例子

在.Net中,您可以使用命名空间在运行时生成和编译代码

例如,您可以创建一个带有接受C#的文本框的“IDE”。当您单击一个按钮时,.Net framework可以将C#编译成动态加载的自定义库或作为新进程启动的完全成熟的可执行文件

当与System.Reflection命名空间的其余部分结合使用时,它的功能非常强大。您可以在运行时检查对象,并根据您喜欢的任何条件编译自定义代码

也就是说。。。在大多数情况下,问题往往大于好处。这主要是一个巨大的安全问题,尤其是在消费类设备上运行时

可以创建一个没有任何接近恶意代码的应用程序,让苹果对其进行审计,然后让应用程序从您的Web服务器下载代码,编译并执行。此新代码不会被审核

在消费者应用程序中这样做真的没有什么好的理由