iOS is not particularly different from OSX. That's why Apple developers get to use a super fast simulator instead of the dog slow emulator we Android developers are stuck with.
Similarities between iOS and macOS don't have much to do with it.
The reason the Android emulator is slow is that it is actually emulating an ARM CPU.
The iOS simulator, on the other hand, is running an iOS natively built for x86, and Xcode targets the x86 architecture when you build your app for the simulator.
> It certainly doesn’t hurt that the simulator only needs to run the iOS front end on top of macOS Darwin instead of a full copy of iOS, though.
Uh, no. The simulator literally boots an entire copy of iOS, with its own libraries, frameworks, and utilities, that's entirely separate from the host OS.
That is incorrect. The iOS simulator is not a virtualized environment. It's not running it's own kernel etc, rather it's just a set of iOS libraries and frameworks built for x86 and a thin compatibility layer so that they run on macOS.
You can actually see your running iOS applications, and all of the iOS daemons etc show up as first class processes on you Mac if you run "ps".
iOS apps running in the simulator are not separate from the host OS at all - they're running on the host OS, just like any other process. Try killing "Springboard" from your Mac command line and watch what happens inside the simulator...
Does anyone really uses ARM emulation? I think, everyone just uses x86 Android image which should be the same as Apple's iOS Simulator. And if you need to test ARM, you should just use real phone.
I've used both. ARM emulation is slow, as you'd expect from a CPU emulation. The default, x86, is blazingly fast. Of course, this is assuming you remember to turn on virtualization features on your CPU.
The default x86 is a fair bit faster than my phone....
Except in multitasking UX. Yes, technically there isn't anything stopping you from running a compiler on iOS, but there's so much more to having a relevant development platform than "does llvm technically run".
> Yes, technically there isn't anything stopping you from running a compiler on iOS, but there's so much more to having a relevant development platform than "does llvm technically run"
You can't run unsigned code on iOS (with a few exceptions), and I don't believe that anyone has come up with a viable solution to codesign code on the fly on-device.
Sure, but my point is that's easy. The hard part is converting iOS to a point where you can get real multitasking work done. Even just switching back and forth between an IDE and a web browser is super painful compared to a desktop/laptop.