条件付きコンパイル時にシミュレータに対して、デバイス
-
21-08-2019 - |
質問
がコンパイラの指令に利用できるコンパイルコンテンツのコードの場合に的を絞った、シミュレータに対して私の装置です。のようなもの:
# 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
をお探しの方に現代の迅速なソリューションでは、(新)プラットフォームの状態 targetEnvironment
に答えます。たとえば、次のようになります。
#if targetEnvironment(simulator)
self.imagePicker.sourceType = .photoLibrary
#else
self.imagePicker.sourceType = .camera
#endif
の 対象環境の基盤状態 機能紹介されました SE-0190 とが可能で 迅速な4.1.
所属していません StackOverflow