The iOS simulator is extremely useful during active development, however, when ensuring required functionality and performance of an application, testing on an actual device is critical.
Below are a handful differences between an actual device and the iOS simulator that developers should be aware of:
1. Since the simulator runs as an application, it has access to the host computer’s resources, including memory, which is always greater than what would be found on an actual device. As a result, apps that might have memory warnings and crashes on device will run fluidly in the simulator.
2. There are a handful of hardware limitations with the simulator:
a. No Accelerometer
b. No Gyroscope
c. No Camera
d. No Microphone
e. No Proximity Sensor
f. No Vibration Support
g. Multi-touch input is very limited
3. There are API limitations:
The following frameworks are unsupported on the simulator:
a. External Accessory
b. Media Player
c. Message UI
d. Event Kit
e. UIViedoEditorControllers class in UIKit
4. Push notifications cannot be tested on the iOS Simulator.
5. Simulator file systems are usually case insensitive (depending on the settings of the host computer), whereas, the file system on an actual device is always case-sensitive.
While the simulator works well for designing, prototyping, and testing apps, it should never be the only platform that is used for testing.
For in-depth information about the iOS simulator, see the iOS Simulator Users guide on the Apple developer portal: https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/iOS_Simulator_Guide/Introduction/Introduction.html#//apple_ref/doc/uid/TP40012848-CH1-SW1