2014-11-20 7 views
8

मैं अपने वैश्विक आयात (अर्थात आयात कि मेरे Xcode प्रोजेक्ट में सभी स्रोत फ़ाइलों को दिखाई हो जाएगा) फ़ाइल AppName -prefix.pch में करते थे।क्या एक्सकोड 6/आईओएस 8 में फ़ाइलों को विश्व स्तर पर आयात करने का तरीका था?

हालांकि, अब एक नई परियोजना बनाने के बाद, एक एक्सकोड 6 (और आईओएस 8) पर्यावरण में, यह फ़ाइल स्वचालित रूप से जेनरेट नहीं होती है।

मेरा सवाल यह है कि एक्सकोड 6 में वैश्विक आयात को सही ढंग से कैसे करें? क्या मैं अपना खुद का ऐपनाम -prefix.pch बना सकता हूं और अंत में इसका उपयोग कर सकता हूं?

नोट: जब Cocoapods, एक फ़ाइल बुलाया Pods- AppName -Bolts-prefix.pch उत्पन्न होता है का उपयोग कर। लेकिन वैश्विक आयात इस के साथ काम नहीं करेगा।

+0

यूप, इसे नवीनतम समावेशन से पीएच का उपयोग करने के लिए निराश किया गया है, क्योंकि यह निर्माण समय बढ़ाता है, और समस्याएं पैदा करता है, अच्छी अभ्यास कक्षाओं को आयात करना है जहां यह जरूरी है, लेकिन यदि आपके पास बहुत सारे वर्ग हैं और वैश्विक आयात चाहते हैं तो यह दर्दनाक है , आप या तो 'pch' फ़ाइल बनाकर इसे मैन्युअल रूप से करने का विकल्प चुन सकते हैं। – iphonic

उत्तर

19

ऐप्पल अंततः समझ गया कि वैश्विक निर्भरता होने के कारण एक बहुत ही खराब अभ्यास है। आदर्श रूप से आपको पीसीएच फ़ाइलों का उपयोग करना बंद करना होगा, क्योंकि यह अन्य फ़ाइलों को बहुत गन्दा बनाता है, और कोड पुन: उपयोग को तोड़ देता है। नई फ़ाइल> अन्य> PCH फ़ाइल

  • परियोजना 'का निर्माण सेटिंग' विकल्प पर - - 'का मान सेट

    वैसे भी, यहाँ समाधान

    1. परियोजना के लिए नए PCH फ़ाइल जोड़ें है प्रीफिक्स हेडर 'को आपके पीसीएच फ़ाइल नाम में, प्रोजेक्ट नाम के साथ प्रीफिक्स - यानी' टेस्टप्रोजेक्ट 'नामक प्रोजेक्ट और' माईफ्रिक्स हैडरफ़ाइल 'नामक पीसीएच फ़ाइल के लिए, प्लेस्ट में' टेस्टप्रोजेक्ट/मायप्रैफिक्स हैडरफाइल.pch 'मान जोड़ें।

  • +0

    मैं आखिरकार प्रत्येक कक्षा में अपने लॉगर को अपने आप आयात करने के साथ जाऊंगा, आप लोगों ने मुझे विश्वास दिलाया! :) इसके अलावा, ऐप्पल आमतौर पर जानता है कि वे इस तरह के बदलाव को प्रेरित करते समय क्या कर रहे हैं, इसलिए मुझे लगता है कि एक अच्छा नागरिक होने के कारण मैं अपनी वैश्विक आयात योजना को खारिज कर दूंगा ... वैसे भी स्पष्टीकरण के लिए धन्यवाद! :) – nburk

    +0

    आपके उत्तर के लिए धन्यवाद। लेकिन मुझे समझ में नहीं आता कि हमें वैश्विक आयात का उपयोग क्यों नहीं करना चाहिए। क्या आप कुछ निर्देश क्यों बता सकते हैं या दे सकते हैं? – sahara108

    +2

    @ सहारा 108 पहले इसकी घटती संकलन गति से पहले, यह भी एक खराब प्रथा है क्योंकि कक्षाओं को किसी अन्य प्रोजेक्ट पर पोर्ट नहीं किया जा सकता है (क्योंकि वे वैश्विक तरीकों/मैक्रोज़/फ़ंक्शंस का उपयोग कर रहे हैं) – l0gg3r

    5

    आप स्वयं को क्रिएट कर सकते हैं, लेकिन बिंदु वास्तव में यह है कि आपको वैश्विक निर्भरता नहीं होनी चाहिए, आपको स्पष्ट रूप से केवल प्रत्येक वर्ग में आवश्यक चीज़ों को आयात करना चाहिए। दरअसल, आपकी .h फाइलों में आपको @class का उपयोग सब कुछ के लिए करने का प्रयास करना चाहिए और केवल अपनी .m फ़ाइल में आयात करना चाहिए। यह दृष्टिकोण एक वर्ग की निर्भरता को बहुत स्पष्ट बनाता है और निर्भरता परिपत्रों की संभावना को कम करता है, जो दोनों बहुत अच्छी चीजें हैं।

    +0

    मैं पूरी तरह से सहमत हूं कि वैश्विक आयात अच्छे अभ्यास नहीं हैं। मैं यह सुनिश्चित करने के लिए लॉगिंग के लिए इसका उपयोग करना चाहता हूं कि मेरे कस्टम लॉगर को मेरी सभी कक्षाओं में आयात किया गया है। क्या इसे हल करने के बेहतर तरीके हैं? – nburk

    +0

    @nburk आपको हर जगह अपना लॉगर आयात करने की आवश्यकता है, या वैश्विक चीजों को संयुक्त बनाने के लिए विरासत का उपयोग करें। – l0gg3r

    0

    Xcode 6 परियोजना की .pch फ़ाइल में अब और नहीं स्वचालित रूप से उत्पन्न लेकिन अगर आप एक चाहते हैं तो आप एक .pch खुद फाइल बना सकते हैं। इसे नीचे करें;

    Goto->File->New->File->(Under iOS)Other->PCH File->Next 
    

    फ़ाइल के लिए नाम दर्ज करें और बचत यह, "सेटिंग बनाएँ" और डालने के रूप में "YourProjectName/YourPCHFileName.pch" "उपसर्ग हैडर" के लिए मान सेट करने के लिए जाने के बाद। और यदि "प्रीकंपाइल उपसर्ग शीर्षलेख" को "नहीं" पर सेट किया गया है, तो इसे "हां" में बदलें। अब आप किसी भी फाइल को वैश्विक स्तर पर आयात करना चाहते हैं, लेकिन यहां सबकुछ रखना एक अच्छा अभ्यास नहीं है।

    +1

    यह काम नहीं करेगा, नए उत्तर – l0gg3r

    +0

    @ l0gg3r का जवाब देने से पहले मेरा जवाब पढ़ें क्षमा करें, जबकि मैं अपना उत्तर लिख रहा था, आपने पहले ही पोस्ट किया है, इसलिए आपका नहीं देखा। और हाँ मैंने अपने मामले में जांच की, आप सही हैं। मुझे आपके द्वारा प्रदान किए गए दूसरे चरण का पालन करना होगा। सुझाव के लिए भी धन्यवाद। –

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