The simulator and the device should run the same code just the same, nevertheless there are few issues that one should take it mind.
The simulator can not run all functionality which the device can run, for example the simulator does not interact with a camera, GPS data is not present (but you can set a fixed location from the options) , and there are few other things along those lines.
The simulator can be used to check your code and functionality much faster than dumping your code on the device while developing, nevertheless the simulator is using your computer's memory and CPU which means that it does not reflect the performances on a real device, speed and memory wise.
Good practice would be to test and develop mostly on the simulator, when your code and stable and working as planed - it is time to test it on the device itself for performances and other issues that are device specific.
I can elaborate more on the topic, but I this is a quick answer to your question.