Por lo que yo sé, iSimulate no está empleando cualquier hacks. Es un código que se ejecuta dentro de su aplicación en el Simulador que se comunica con un dispositivo a través de la red. Cuando recibe mensajes del dispositivo (toques, GPS, aceleración), simula esos eventos llamando el código de la aplicación como si el sistema los hubiera activado.
Por ejemplo, para recibir actualizaciones de ubicación GPS, debe crear una instancia de CLLocationManager y luego configurar una de sus clases para que sea su delegado. Bueno, en el simulador de iPhone, en su lugar, puede iniciar el código que envía mensajes falsos a su delegado. Si usted acaba de llamar el método de un delegado de esta manera:
[delegate locationManager:nil didUpdateToLocation:newLocation fromLocation:oldLocation];
El código no tendrá que saber que la actualización de localización es falso. Si quieres ser elegante, puedes crear una nueva clase que implemente todos los métodos públicos de CLLocationManager, pero que envíe mensajes falsos. (Dado que Objective-C se tipea dinámicamente, no será necesario que sea una subclase, siempre que responda a todos los mensajes que envíe)
Como nota al margen, puede utilizar estas macros de compilación para mantener el código simulador de sólo:
#if TARGET_IPHONE_SIMULATOR
locationManager = (id)[[MyFakeLocationManager alloc] init];
#else
locationManager = [[CLLocationManager alloc] init];
#endif
que proporciona una segunda respuesta que describe las características ahora integrados en la simulación localización en Xcode ≥4.2: http://stackoverflow.com/a/9359093/235297 –