2017-03-02 15 views
8

में प्रीप्रोसेसर द्वारा अनदेखा किया गया है, मैंने प्रोजेक्ट लक्ष्य के Build Settings के Preprocessor Macros अनुभाग मेंजोड़ा, और जब भी मैं इसे कोड में उपयोग करता हूं, प्रीप्रोसेसर सोचता है कि यह परिभाषित नहीं है।लक्ष्य प्रीप्रोसेसर मैक्रोज़ को एक्सकोड

  1. alt + उस पर क्लिक करें एक प्रश्न चिह्न से पता चलता
  2. वाक्य रचना रंग अच्छी तरह से
  3. काम नहीं करता है वाक्य रचना स्वत: पूर्ण अच्छी तरह से

उदाहरण के लिए काम नहीं करता है, होने:

#if TEST 

// a 

#else 

// b 

#endif 

इस व्यवहार में है:

  1. सिंटेक्स रंग केवल // b के लिए काम करता
  2. सिंटेक्स स्वत: पूर्ण के लिए ही // b

काम करता है इसका कारण यह है पूर्वप्रक्रमक TEST नहीं मिल सकता है (भले ही 1 रूप में परिभाषित किया गया है, जैसा कि मैंने पहले कहा) तो यह इसे false के रूप में मानता है।

क्या इन समस्याओं को हल करने का कोई तरीका है?

संपादित करें:

मेरे उपयोग के मामले कई परियोजना लक्ष्य से संबंधित है। तो, कहें कि प्रारंभिक लक्ष्य का नाम First है, जिसमें TEST प्रीप्रोसेसर मैक्रो मूल्य 1 के साथ परिभाषित किया गया है।

अगर मैं एक अन्य परियोजना लक्ष्य परिभाषित नहीं पूर्वप्रक्रमक मैक्रो के Second नामित बना सकते हैं और इसके लिए कुछ कोड जोड़ना चाहते हैं केवल यदि TEST0 (false/परिभाषित नहीं) है, मैं इसे #else ब्लॉक (// b) में डाल देता हूँ।

यह जानते हुए कि वाक्य रचना रंग और स्वत: पूर्ण // b के लिए काम करता है, ऐसा लगता है कि यह ठीक से काम करता है, लेकिन अगर मैं First एक करने के लिए वर्तमान लक्ष्य को बदलने के रूप में Second चयन किया जाता है (यमक इरादा) और यहां तक ​​कि इसे बनाने, यह अभी भी काम करता है ।

+0

यदि आप प्रोजेक्ट बनाते हैं, तो प्रीप्रोसेसर संकलन समय झंडे का पता लगाएगा और रंग और स्वत: पूर्ण दिखाएगा। क्या आपने कोशिश की है? – manishg

+0

बेशक मैंने परियोजना का निर्माण किया। –

+0

क्या आपने इसे डीबग और रिलीज दोनों के लिए किया था? यह मेरे अंत में काम करता है। – manishg

उत्तर

1

बस लक्ष्य-> योजना संपादित करें -> चलाएं -> जानकारी बनाएं और बिल्ड कॉन्फ़िगरेशन की जांच करें। अब बिल्डिंग सेटिंग में प्रीप्रोसेसर मैक्रोज़ जोड़ते समय बस सुनिश्चित करें कि आप सही निर्माण कॉन्फ़िगरेशन और सही लक्ष्य के लिए मैक्रो जोड़ रहे हैं।

≈

मैं दोनों डिबग के लिए जोड़कर की कोशिश की और रिलीज मेरे लक्ष्य अनुप्रयोग (टेस्ट ObjectiveC) के लिए के रूप में ऊपर का निर्माण। तो जब मैंने इस सेटिंग के साथ कोड के नीचे कोशिश की, तो आप तदनुसार वाक्यविन्यास रंग देख सकते हैं।

enter image description here

+0

और जब आप cmd + क्लिक करते हैं तो क्या होता है? –

+0

@lulian यह सुनिश्चित नहीं है कि आप cmd + क्लिक के साथ वहां क्या देखना चाहते हैं। –

+0

मैं बस सोच रहा था कि क्या यह 'बिल्ड सेटिंग्स' खोलना जानता है या यदि यह मेरे उदाहरण के रूप में प्रश्न चिह्न दिखा रहा है। मेरे बड़े प्रोजेक्ट की अन्य सेटिंग्स हो सकती हैं जो इससे हस्तक्षेप करती हैं। मैं इसे एक नई परियोजना में स्वयं परीक्षण करने का प्रयास करूंगा और यह पता लगाने की कोशिश करता हूं कि समस्या मेरी सेटिंग्स में से किसी एक के कारण होती है या नहीं। –

1

आप स्विफ्ट में इस तरह यह करने के लिए चाहते हैं, आप एक User-Defined सेटिंग OTHER_SWIFT_FLAGS नामित अपने Build Settings में इस तरह जोड़ना चाहिए:

OTHER_SWIFT_FLAGS user-defined setting

और फिर अपने कोड में आप टाइप :

#if TEST1 

// Debug 

#endif 

#if TEST2 

// Release 

#endif 

मुझे नहीं पता कि आपको इसकी आवश्यकता क्यों है, लेकिन यह माँ y मूल रूट कोड के साथ कई ऐप्स के लिए विशिष्ट व्यवहार का उपयोग करने के लिए देशी एक्सकोड लक्ष्य में देखने के लिए दिलचस्प हो। यदि आप यही चाहते हैं, तो आपको यह लेख देखना चाहिए: AppCoda using Targets with XCode

संबंधित मुद्दे