2011-09-29 2 views
5

चलाता हूं तो एक्सकोड पूरे प्रोजेक्ट को संकलित करता है, मैंने एक नई परियोजना पर शुरू किया है, एक्सकोड ने फैसला किया है कि यह हर बार जब मैं इसे चलाने वाली फाइलों को संकलित करने के बजाय प्रोजेक्ट में प्रत्येक फ़ाइल संकलित कर दूंगा (और उन पर निर्भर फाइलें)। चूंकि परियोजना में अधिक से अधिक फाइलें हो रही हैं, यह दोनों समय और बैटरी जीवन में एक बड़ा और बड़ा बोझ बन जाता है।प्रत्येक बार जब मैं

यह संभव है कि मैंने कहीं ऐसी सेटिंग बदल दी है जो इससे प्रभावित हुई है; या शायद नहीं। कुछ परियोजना सेटिंग्स क्या हैं जिन्हें मुझे देखना चाहिए?

+0

क्या आपको कभी इसके लिए कोई समाधान मिला? – ekeren

+0

@ekeren नहीं मैंने नहीं किया। मान लें कि यह एक्सकोड में एक बग है जिसे बाद में तय किया गया है। – leecbaker

उत्तर

7

यदि एक्सकोड जब भी आप बिल्ड करते हैं तो अधिकांश या सभी स्रोत फ़ाइलों को पुन: संकलित करते हैं, आमतौर पर इसका मतलब है कि वे फ़ाइलें सीधे या अप्रत्यक्ष रूप से कुछ शीर्षलेख फ़ाइल पर निर्भर हैं जो बदली गई हैं।

  1. अपने स्रोत फ़ाइलें क्या कुछ शीर्ष स्तर के हेडर फाइल है जो अपने आप रिकर्सिवली निचले स्तर हेडर फाइल का एक समूह का आयात करता है #import की होती है: ये कुछ चीजें हैं देखने के लिए कर रहे हैं? यदि निर्भर हेडर के उस पेड़ में कोई भी फ़ाइल संशोधित की गई है, तो यह किसी भी .m फ़ाइल के पुनर्मूल्यांकन को मजबूर करेगी जो शीर्ष-स्तरीय शीर्षलेख फ़ाइल आयात करती है। आप निचले स्तर के सबमिड्यूल के लिए हेडर आयात करके, या बेहतर अभी तक, प्रत्येक फ़ाइल के लिए आवश्यक विशिष्ट शीर्षकों के लिए इन निर्भरताओं को कम करने में सक्षम हो सकते हैं। (नोट: कुछ पुस्तकालय जिन्हें इस तरह इस्तेमाल करने के लिए डिज़ाइन नहीं किया गया है, इस मामले को कुछ मामलों में चुनौतीपूर्ण या असंभव बना सकते हैं।)

  2. कुछ तृतीय पक्ष विकास उपकरण और स्थैतिक पुस्तकालय स्क्रिप्ट चलाते हैं जो कोड उत्पन्न या संशोधित करते हैं उनकी निर्माण प्रक्रिया। यदि आपकी स्रोत फ़ाइलें किसी स्क्रिप्ट द्वारा जेनरेट की गई हेडर फ़ाइल पर निर्भर हैं, तो प्रत्येक बार जब स्क्रिप्ट उस हेडर फ़ाइल को पुन: उत्पन्न करता है तो उन्हें फिर से संकलित किया जाएगा। यहां तक ​​कि यदि स्क्रिप्ट द्वारा उत्पन्न कोड बदलता नहीं है, तो हेडर फ़ाइल की अंतिम-संशोधित दिनांक में परिवर्तन होने पर निर्भर स्रोत फ़ाइलों को फिर से संकलित किया जाएगा। अगर यह आपकी समस्या है तो अनावश्यक संकलन को खत्म करने में कुछ चालाक हैकिंग लग सकती है।

  3. यह देखने के लिए कि क्या आयात किया जा रहा है, अपने प्रीकंपील्ड हेडर (.pch) फ़ाइल को देखना न भूलें। संकलन समय पर आपकी परियोजना में प्रत्येक .m फ़ाइल के शीर्ष पर उस फ़ाइल की सामग्री प्रभावी ढंग से इंजेक्शन दी जाती है।

  4. अपनी .h फ़ाइलों और अपनी .m फ़ाइलों में जितनी संभव हो सके #import कथनों को स्थानांतरित करके निर्भरताओं को कम करने का प्रयास करें। आप आम तौर पर अपने वर्ग के सुपरक्लास के लिए हेडर आयात कर सकते हैं और आपकी कक्षा किसी भी प्रोटोकॉल को अपनी .h फ़ाइल में लागू कर सकते हैं। आप अपने वर्ग के @interface में उपयोग किए जाने वाले किसी अन्य वर्ग, डेटा प्रकार या प्रोटोकॉल के लिए #import बयानों के बजाय आगे की घोषणाओं का उपयोग कर सकते हैं।

+0

इनमें से कोई भी समस्या नहीं है जो मुझे सामना कर रहा है- फिर भी, मैं इसे स्वीकार किए गए उत्तर के रूप में चिह्नित कर रहा हूं क्योंकि मुझे लगता है कि इससे शुरुआती लाभ हो सकते हैं जो इस पृष्ठ को मिलेगा। – leecbaker

7

मुझे पता है इस सवाल के महीने एक वर्ष से अधिक है, लेकिन मैं Xcode 4. करने के लिए एक पुराने परियोजना आगे बढ़ ज्यादा बाल प्रतिपादन के बाद में एक ऐसी ही समस्या थी, मुझे पता चला Xcode 4 (मेरे मामले में 4.2) है एक बग, जहां किसी स्रोत फ़ाइल के पूर्ण पथ में किसी भी गैर-ASCII वर्ण हैं, या किसी भी शीर्षलेख के पूर्ण पथ में स्रोत फ़ाइल में शामिल हैं, तो हर बार आपके द्वारा बनाए जाने पर इसे फिर से सम्मिलित किया जाएगा। इसमें उपसर्ग शीर्षलेख शामिल है, इस मामले में हर बार एक पूर्ण संकलन ट्रिगर किया जाएगा। मेरे मामले में, पिछले प्रोग्रामर ने कई फ़ोल्डर नामों में 'ƒ' जोड़ा था, और एक बार जब मैंने उन्हें हटा दिया, तो यह पूरी तरह से काम करता था।

वैसे भी, मैंने Google (उत्तरदायी) प्रयासों के दौरान इस प्रश्न पर ठोकर खाई और जवाब दिया कि मैं अपना समाधान साझा करूंगा।

+0

अच्छा होगा अगर आपने जोड़ा "एक्सकोड के साथ यह समस्या एक्सकोड xxx में तय की गई थी)। अन्यथा पाठकों को यह जांचने के लिए एक समय लेने वाली सेटअप के साथ आना चाहिए कि यह एक समस्या है या नहीं। हम अब Xcode 7.2.1 में हैं , आप ध्यान दें। –