Условная компиляция при работе в симуляторе, а не на устройстве.

StackOverflow https://stackoverflow.com/questions/864920

Вопрос

Есть ли директива компилятора, которую я могу использовать для компиляции другой строки кода при работе с симулятором, а не с моим устройством?Что-то вроде:

# IF SIMULATOR
[self.imagePicker setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
# ELSE
[self.imagePicker setSourceType:UIImagePickerControllerSourceTypeCamera];
# END

РЕДАКТИРОВАТЬ

Прямая ссылка на документы.

Это было полезно?

Решение

#if TARGET_IPHONE_SIMULATOR
[self.imagePicker setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
#else
[self.imagePicker setSourceType:UIImagePickerControllerSourceTypeCamera];
#endif

Другие советы

Обновлять:(Устарело/устарело). Это работало всего несколько лет и больше не работает.(10+ лет спустя)

Для справки, вот еще один метод, который Apple использует в некоторых своих официальных примерах кода:

#if TARGET_CPU_ARM
  // Only executes on an iPhone or iPod touch device
  [self.imagePicker setSourceType:UIImagePickerControllerSourceTypeCamera];
#else
  // Only executes on the Simulator
  [self.imagePicker setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
#endif

Для тех, кто ищет современное решение Swift, условие (новой) платформы targetEnvironment дает здесь окончательный ответ.Например:

#if targetEnvironment(simulator)
self.imagePicker.sourceType = .photoLibrary
#else
self.imagePicker.sourceType = .camera
#endif 

А состояние платформы целевой среды функция была представлена SE-0190 и доступен с Свифт 4.1.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top