2013-05-29 13 views
7

Tôi đang làm việc trên một dự án sử dụng Xamarin.iOS và tôi có một tình huống mà hành vi trong trình mô phỏng không thể giải thích được trên thiết bị thực tế (thiết lập khu vực của một trung tâm bản đồ khác nhau) .Phát hiện iOS Simulator và thiết bị iOS

Tôi muốn có thể đặt giá trị cho biến trong thời gian chạy dựa trên việc ứng dụng có đang chạy trên trình mô phỏng hay thiết bị thực không. Làm thế nào tôi có thể phát hiện điều này?

+0

Nếu bạn biết bạn đang biên dịch cho mục tiêu Mô phỏng hoặc Thiết bị, tại sao không kiểm tra macro thời gian biên dịch? Không có khả năng có thể chạy cùng một nhị phân cả trên Simulator và thiết bị. Xem [Phát hiện lập trình nếu ứng dụng đang chạy trên thiết bị hoặc trình mô phỏng] (http://stackoverflow.com/questions/5775420/programmatically-detect-if-app-is-being-run-on-device-or-simulator) – Simon

+0

Câu trả lời thời gian biên dịch sẽ hoạt động nếu tôi có thể làm cho nó hoạt động cho Xamarin/C#. Cảm ơn. –

Trả lời

11

Bạn có thể thực thi mã khác nhau trong thời gian chạy như thế này:

if (MonoTouch.ObjCRuntime.Runtime.Arch == Arch.DEVICE) { 
} else { 
} 

Nhưng nó luôn luôn tốt để điều tra (hỏi xung quanh đây, diễn đàn, báo cáo lỗi) tại sao hành vi khác nhau giữa hai (chỉ để chắc chắn rằng nó không ẩn một lỗi có thể cắn bạn sau này).