> because Apple did not want Flash to eat into their app store profits
Here's a fun fact nobody remembers anymore. Way back when (2010?) Adobe built a Flash feature that let you publish iOS apps. The feature went through an open beta and lots of flash devs made iOS apps, they worked fine, Apple accepted them into the app store, fun times.
Then riiight as the tech left beta, Apple changed the iOS terms to nonsensically restrict what language apps are "originally written" in - the source language had to be one Xcode supported, and apps converted from other languages were disallowed. Apple then removed the flash-based apps from their store, Adobe had to discontinue the feature, and a bit later Apple quietly removed the restriction.
(Working from memory here, details are approximate.)
To fill in some details (but IANAiOSdev): Apple first disallowed interpreted code [1]. (Wow, I had forgotten how much I loathed Apple for that.) Later in 2010 Apple loosened it to allow interpreted languages as long as you didn't download new code from the internet [1]. The exception was that you could use WebKit to run JS in a webpage in your app. I guess their excuse was security, so they could ensure the app they approved was the one you ran. In 2017 [2] they loosened it further to allowing downloading or importing code in some circumstances. The most important limitation now is that you can't generate executable code on iOS, which disallows JITs and makes everything other than WebKit a second-class citizen.
The old terms:
> Unless otherwise approved by Apple in writing, no interpreted code may be downloaded or used in an Application except for code that is interpreted and run by Apple's Documented APIs and built-in interpreter(s). Notwithstanding the foregoing, with Apple’s prior written consent, an Application may use embedded interpreted code in a limited way if such use is solely for providing minor features or functionality that are consistent with the intended and advertised purpose of the Application.
That's a separate unrelated issue. The terms I'm taking about dictated what language the app could be "originally written" in, regardless of what happened at runtime. Technically, if you prototyped an app in some other tech and then manually ported it to objective-C it wasn't even clear if that would satisfy the terms as written.
(In practice of course it didn't matter what the terms precisely meant, because Apple never enforced them apart from removing flash-based apps.)
They did this just after I had started learning C# with Xamarin for iOS dev, it's why I got out of mobile development and am now a python/Django developer.
Edit: I forgot, at the time I was between jobs (2008) and had used a chunk of my money to buy an iPhone to learn iOS Dev on, they wasted a load of my time, and money.
Here's a fun fact nobody remembers anymore. Way back when (2010?) Adobe built a Flash feature that let you publish iOS apps. The feature went through an open beta and lots of flash devs made iOS apps, they worked fine, Apple accepted them into the app store, fun times.
Then riiight as the tech left beta, Apple changed the iOS terms to nonsensically restrict what language apps are "originally written" in - the source language had to be one Xcode supported, and apps converted from other languages were disallowed. Apple then removed the flash-based apps from their store, Adobe had to discontinue the feature, and a bit later Apple quietly removed the restriction.
(Working from memory here, details are approximate.)