Theo như tôi biết, iSimulate không sử dụng bất kỳ hacks. Đó là mã chạy trong ứng dụng của bạn trên Trình mô phỏng kết nối với thiết bị qua mạng. Khi nhận được tin nhắn từ thiết bị (chạm, GPS, tăng tốc), nó sẽ mô phỏng các sự kiện đó bằng cách gọi mã của ứng dụng của bạn như thể hệ thống đã kích hoạt chúng.
Ví dụ: để nhận cập nhật vị trí GPS, bạn phải tạo một phiên bản của CLLocationManager và sau đó định cấu hình một trong các lớp của bạn làm đại biểu của nó. Vâng, trên iPhone Simulator bạn thay vào đó có thể bắt đầu mã gửi tin nhắn giả cho đại biểu của bạn để thay thế. Nếu bạn chỉ cần gọi một phương thức của đại biểu như sau:
[delegate locationManager:nil didUpdateToLocation:newLocation fromLocation:oldLocation];
Mã của bạn sẽ không phải biết rằng cập nhật vị trí là giả mạo. Nếu bạn muốn có được ưa thích, bạn có thể tạo một lớp mới thực hiện tất cả các phương thức công khai của CLLocationManager nhưng thay vào đó sẽ gửi các thông điệp giả mạo. (Vì Mục tiêu-C được nhập động, nó sẽ không cần phải là lớp con, miễn là nó phản hồi tất cả các thư bạn gửi.)
Lưu ý rằng bạn có thể sử dụng các macro trình biên dịch này để giữ mã mô phỏng chỉ:
#if TARGET_IPHONE_SIMULATOR
locationManager = (id)[[MyFakeLocationManager alloc] init];
#else
locationManager = [[CLLocationManager alloc] init];
#endif
Tôi đã cung cấp câu trả lời thứ hai mô tả các tính năng mô phỏng vị trí hiện tại tích hợp trong Xcode ≥4.2: http://stackoverflow.com/a/9359093/235297 –