Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.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
为Objective-C和Java编写通用代码的最佳方法?_Java_Objective C - Fatal编程技术网

为Objective-C和Java编写通用代码的最佳方法?

为Objective-C和Java编写通用代码的最佳方法?,java,objective-c,Java,Objective C,我正在同时为Android和iOS开发本机应用程序。我知道没有“好”的方法可以一次性编写代码并在两个平台上运行——技术上是的,我可以使用Phonegap,但从用户的角度来看,由于平台的差异,他们不会觉得自己是本地应用 但有没有办法在两个平台之间共享控制器代码的子集?我说的是“不可见”代码,即与(直接)绘制UI无关的代码,不使用iOS和Android框架。例如,如果我正在开发《愤怒的小鸟》,那么实现控制小鸟飞行轨迹的物理方程的最佳方法是什么?如何在两个平台之间最好地共享此类代码?我所说的“最佳”是

我正在同时为Android和iOS开发本机应用程序。我知道没有“好”的方法可以一次性编写代码并在两个平台上运行——技术上是的,我可以使用Phonegap,但从用户的角度来看,由于平台的差异,他们不会觉得自己是本地应用


但有没有办法在两个平台之间共享控制器代码的子集?我说的是“不可见”代码,即与(直接)绘制UI无关的代码,不使用iOS和Android框架。例如,如果我正在开发《愤怒的小鸟》,那么实现控制小鸟飞行轨迹的物理方程的最佳方法是什么?如何在两个平台之间最好地共享此类代码?我所说的“最佳”是指如何1)最大限度地缩短开发时间,2)简化维护,3)简化未来的升级。

用C写可能就是答案

Objective C只是C的超集,您可以将模型层编写为C函数的包装器

据介绍,您可以在Android中使用JNI做一些非常类似的事情

正如您所说,这仅适用于模型层。您必须在iOS中为视图和控制器层编写Objective C,在Android上也会遇到同样的情况。

选项我看到:

  • 使用服务器端计算逻辑,然后任何UI都可以在任何平台上显示逻辑。但是,此选项需要网络连接,或者可能由于ping而响应缓慢

  • 用C/C++编写通用代码。此选项更为复杂,但在100%的情况下,当C/C++编译为本机代码时,它将工作,这意味着几乎所有操作系统都支持它

  • 用Python、LUA等脚本语言编写通用代码。。。这将需要客户端的解释器。如果在每个帧上执行scrip并在其中执行复杂的逻辑,也可能会出现性能问题

  • 使用phoneGap/mono/marmelade..。这将限制本机功能,您将始终依赖第三方,而不是本机SDK。但是如果你开发openGL es游戏,也许marmelade就是一条出路

  • 在我看来,C/C++是一个不错的选择,特别是如果你正在开发一款游戏,并且不想把自己限制在一个平台上

    PS:如果我像愤怒的小鸟一样开发游戏,我会使用BOx2d,而不是自己实现物理

    编辑:
    本机代码仅在windows phone 8上受支持。

    好吧,愤怒的小鸟是用Lua编写的。愤怒的小鸟使用Lua作为存储变量的配置文件。对于每个级别,它们存储元素的位置。但是所有的逻辑和物理计算、渲染、声音都是用本机代码完成的,我想C/C++
    用C/C++[…]编写代码,这意味着所有操作系统都支持它
    -WinPhone 7允许执行本机代码吗?我以为他们不支持,但可能已经改变了这种立场。你是对的,windows phone 7不支持本机代码,但windows phone 8支持本机代码。@victor。你不知道在为iOS、Android和windows phone编写通用本机代码时有何限制吗?我要说的是支持哪些库,是支持所有的Android还是只支持一个子集?黑莓呢?在IOS上我没有遇到任何问题,它的集成非常好,因为objective-c基于c。在Android上,你可以使用NDK编译本机代码。我不确定旧的黑莓设备,但在新设备上可以使用原生SDK。在windows phone上,版本8支持此功能。