2009-07-05 7 views
6

क्या कोई एकल प्रीप्रोसेसर टोकन है जिसका उपयोग किसी भी आईफोन डिवाइस या सिम्युलेटर को बिल्ड समय पर करने के लिए किया जा सकता है? मैं वर्तमान में उपयोग कर रहा हूं:आईफोन प्लेटफ़ॉर्म का पता लगाने के लिए अंतर्निहित प्रीप्रोसेसर टोकन

#ifdef __IPHONE_OS_VERSION_MIN_REQUIRED 
    // This is an iPhone build 
#endif 

क्या यह अनुशंसित दृष्टिकोण है या क्या कोई बेहतर तरीका है? मैं मैक्रो को अंतर्निहित करना पसंद करूंगा, यानी कंपाइलर द्वारा परिभाषित किया गया है, न कि एक एसडीके हेडर फ़ाइल द्वारा मुझे इसमें शामिल करना होगा।

मैं अभी आईफोन ओएस संस्करणों के बीच अंतर करने के बारे में चिंतित नहीं हूं, लेकिन यदि कोई ऐप्पल प्रलेखन पृष्ठ है जो सभी प्रासंगिक मैक्रोज़ का विवरण देता है और जब वे परिभाषित नहीं होते हैं तो मैं इसके लिंक के रूप में सराहना करता हूं मेरी खोज अब तक कम हो गई है।

धन्यवाद!

उत्तर

8

फ़ाइल आप देख रहे हैं TargetConditionals.h है, जो सभी मैक्रो में आपकी रुचि है परिभाषित करता है आप 2.2 SDK के लिए निम्न पथ की तरह एसडीके के प्रत्येक संस्करण में यह मिल जाएगा,:।

/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator2.2.sdk/usr/include/TargetConditionals.h 
+0

धन्यवाद, मैं शुरू में एहसास हुआ नहीं था कि TargetConditionals.h मैक ओएस एक्स SDKs के साथ ही iPhone SDK में उपस्थित थे। –

2

यदि आपके पास आईफोन और डेस्कटॉप पर चलने वाला कोड है, तो आप यह निर्धारित करने के लिए TARGET_OS_IPHONE का उपयोग कर सकते हैं कि लक्ष्य ओएस आईफोन ओएस का कोई संस्करण है या नहीं। TARGET_IPHONE_SIMULATOR भी है, जिसे केवल सिम्युलेटर के लिए बनाया जा रहा है जब परिभाषित किया जाता है। वे अभी भी हेडर फाइलों में परिभाषित हैं, लेकिन मुझे उम्मीद है कि मदद करता है!

13

this site से हम पाते हैं आप की जरूरत है कि TARGET_OS_IPHONE

#if TARGET_OS_IPHONE 
//Do iPhone stuff 
#else 
//Do Mac stuff 
#endif