Is this the mono touch using a C# interrupter or compiler to transfer the C# code to Objective C? But based on the Apple guideline, a interrupter or compiler application is not allow to submit on the AppStore. How is this magic going on? Thanks.
-
Duplicate of http://stackoverflow.com/questions/1583856/how-to-decide-between-monotouch-and-objective-c – Philip Kendall Jun 01 '12 at 17:50
-
1Um, that's not even remotely a duplicate of this question. – Kirk Woll Jun 01 '12 at 17:50
-
2Sorry, more like "see the first comment on that question" which points to Apple removing their restrictions on dev platforms. – Philip Kendall Jun 01 '12 at 17:51
3 Answers
From the Introduction to MonoTouch documentation:
MonoTouch allows you to write native iOS applications using C# and the .NET Base Class Library (BCL). Via the magic of Mono’s compiler, applications built on the MonoTouch platform compile down directly to native ARM assembly code.
Since it is compiling down to ARM code, there is no interpretation happening on the device while your app is running, which is why apps are in compliance with the AppStore requirements.

- 37,428
- 8
- 84
- 134
In the documentation, Introduction to MonoTouch (emphasis added):
MonoTouch allows you to write native iOS applications using C# and the .NET Base Class Library (BCL). Via the magic of Mono’s compiler, applications built on the MonoTouch platform compile down directly to native ARM assembly code. This contrasts with compilers for traditional .NET applications that create Intermediate Language (IL) code that compiles at run time. Even things like generics, which used to rely on Just In Time (JIT) compilation are available via Mono’s Ahead Of Time (AOT) compiler.
So there is no interpreter. It compiles to native ARM assembly.

- 28,043
- 9
- 61
- 79
Please see this press release from Apple in 2010 which states that they have removed the restrictions on tools used to create iOS apps. (Hat tip to @ShaChris23's comment on this question.)
That explains why regular compilers are allowed - and as the other answers have explained, MonoTouch is a compiler, not an JIT interpreted/compiled language like Mono/.NET is on other platforms.

- 1
- 1

- 4,304
- 1
- 23
- 42