2010-06-09 31 views
19

Tôi tự hỏi, khi xây dựng một ứng dụng iPhone cho Trình mô phỏng, có thêm DEFINE bổ sung cho phép tôi biên dịch có điều kiện cho trường hợp này không?Xcode, iPhone: Cách phát hiện mục tiêu giả lập tại thời gian biên dịch?

Nếu không, tôi sẽ phải thêm mục tiêu của riêng mình cho trường hợp này, nhưng tôi muốn có cách phát hiện tự động.

Ngoài ra, có cách nào năng động để biết khi nào mã của tôi chạy trên Trình mô phỏng, tôi ngụ ý điều gì đó được ghi chép? Tôi đã tìm kiếm tài liệu trong một thời gian nhưng chưa có may mắn.

Trả lời

53

Đối với thời gian biên dịch kiểm tra xem bạn cần TARGET_IPHONE_SIMULATOR quy định tại TargetConditionals.h

#if TARGET_IPHONE_SIMULATOR 
// Simulator code 
#endif 

Đối với thời gian chạy kiểm tra xem bạn có thể sử dụng ví dụ -model phương pháp trong UIDevice. Đối với trình mô phỏng iPhone, nó trả về iPhone Simulator chuỗi (không chắc chắn về giả lập iPad)

+0

Tính đến 4.2 khi mô phỏng là trong iPad-mode nó dường như luôn luôn trở lại 'iPhone Simulator'. – zekel

9

@Update:
Trong SDK iOS 9.0, TARGET_IPHONE_SIMULATOR là - KHÔNG DÙNG. sử dụng TARGET_OS_SIMULATOR thay vì TARGET_IPHONE_SIMULATOR

#if TARGET_OS_SIMULATOR 
    // Simulator code 
#endif 
Các vấn đề liên quan