Are C/C++/ObjC/Swift/JS Apple's only allowed languages for iPhone development?

与世无争的帅哥 提交于 2019-12-09 14:55:16

问题


According to this post on Daring Fireball a new iPhone SDK Agreement release in conjunction with the iPhone OS 4.0 announcement today specifically bans any iPhone application not implemented in C, C++ Objective-C or JavaScript. The clear impact here is to the wide array of programs written in languages other than those.

Is that your reading of the clause in the new agreement as well?

Update: Here is the clause as printed on Daring Fireball:

3.3.1 — Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs. Applications must be originally written in Objective-C, C, C++, or JavaScript as executed by the iPhone OS WebKit engine, and only code written in C, C++, and Objective-C may compile and directly link against the Documented APIs (e.g., Applications that link to Documented APIs through an intermediary translation or compatibility layer or tool are prohibited).


回答1:


Apple has had a ban on interpreted languages on the iPhone for a while now, but yes, I suppose this makes the ban more clear and more precise. I imagine that yes, Apple is saying that if you use a language other than C, C++, Objective-C, or JavaScript, you run the risk of having your app rejected from the App Store on those grounds.




回答2:


This has been causing friction between apple and developers since they first opened up cocoa touch.

There was the Commodore 64 issue: http://gizmodo.com/5354422/commodore-64-iphone-app-approved-removed

The c-64 emulator allowed access to the basic CLI and was removed by apple.

There was also a lot of discussion on the Lua list: http://lua-users.org/lists/lua-l/2009-10/msg00015.html

Lua can be built on the iPhone arm processor from the c source so is this considered c or Lua?

Some applications using Lua have been accepted: http://tuomaspelkonen.com/2010/03/why-lua-truly-rocks/

Unity uses scripting languages as a part of its API and many Unity games have been accepted: http://unity3d.com/gallery/game-list/

...including Zombieville which "was recognized in Apple's iTunes Rewind 2009 as one of the top-selling games of the year".

I can't see them removing all of these games at this point.

What people have been most frustrated with is that there does not seem to be a single standard for what is accepted and what is not. Do big players like Adobe and Unity get special privileges to use scripting which smaller groups do not?




回答3:


Yep it sure looks that way to me too. My guess is that it was written to stop the whole Adobe CS5 Flash to iPhone app export thing. Kinda sucks for Adobe if that is true since Adobe is releasing CS5 in a few days.




回答4:


There is also the option of C# with MonoTouch. I believe that it allows you to use any language that emits valid CLI bytecode, but don't quote me on that.

http://monotouch.net/




回答5:


It seems so. Apple just lost a fanboy.




回答6:


A policy against transpilers and interpreters was in effect from April 2010 through September 2010. It is no longer in effect, though bans on hot-patching and third-party JIT engines remain in effect. From "Apple relaxing SDK license agreement: MonoTouch (and Flash?) officially allowed":

In particular, we are relaxing all restrictions on the development tools used to create iOS apps, as long as the resulting apps do not download any code.




回答7:


Sadly, yes. That is my reading as well.



来源:https://stackoverflow.com/questions/2603279/are-c-c-objc-swift-js-apples-only-allowed-languages-for-iphone-development

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!