जवाबों:
मुझे मॉड्यूल के कारण संदेह है, जो की आवश्यकता को दूर करते हैं #import <Cocoa/Cocoa.h>
।
जहां आप एक उपसर्ग हैडर में रखा जाएगा, जहां कोड डाल करने के लिए के रूप में, वहाँ कोई कोड आप उपसर्ग हैडर में रखा जाना चाहिए है। अपने आयात को उन फ़ाइलों में डालें जिनकी उन्हें आवश्यकता है। अपनी परिभाषाओं को उनकी अपनी फाइलों में डालें। अपना मैक्रोज़ डालो ... कहीं नहीं। जब तक कोई दूसरा तरीका न हो (जैसे जब आपको ज़रूरत हो __FILE__
) मैक्रोज़ लिखना बंद कर दें । यदि आपको मैक्रोज़ की आवश्यकता है, तो उन्हें हेडर में रखें और इसे शामिल करें।
उपसर्ग हेडर उन चीजों के लिए आवश्यक था जो विशाल हैं और पूरे सिस्टम में लगभग हर चीज द्वारा उपयोग की जाती हैं (जैसे Foundation.h
)। यदि आपके पास कुछ ऐसा है जो विशाल और सर्वव्यापी है, तो आपको अपनी वास्तुकला पर पुनर्विचार करना चाहिए। उपसर्ग हेडर कोड का पुन: उपयोग कठिन बनाते हैं, और सूचीबद्ध फ़ाइलों में से किसी को भी बदल सकते हैं, तो सूक्ष्म बिल्ड समस्याओं का परिचय देते हैं। जब तक आपके पास एक गंभीर बिल्ड टाइम समस्या नहीं है, तब तक उससे बचें। आप उपसर्ग हेडर के साथ नाटकीय रूप से सुधार कर सकते हैं।
उस मामले में आप एक बना सकते हैं और इसे क्लैंग में पास कर सकते हैं, लेकिन यह अविश्वसनीय रूप से दुर्लभ है कि यह एक अच्छा विचार है।
संपादित करें: एक HUD के बारे में अपने विशिष्ट प्रश्न के लिए जिसे आप अपने सभी दृश्य नियंत्रकों में उपयोग करते हैं, हाँ, आपको इसे हर उस दृश्य नियंत्रक में बिल्कुल आयात करना चाहिए जो वास्तव में इसका उपयोग करता है। यह निर्भरता को स्पष्ट करता है। जब आप किसी नए प्रोजेक्ट में अपने व्यू कंट्रोलर का पुनः उपयोग करते हैं (जो कि यदि आप अपने कंट्रोलर्स को अच्छी तरह से बनाते हैं) तो आपको तुरंत पता चल जाएगा कि उसे क्या चाहिए। यह श्रेणियों के लिए विशेष रूप से महत्वपूर्ण है, जो कोड का पुन: उपयोग करने के लिए बहुत कठिन बना सकते हैं यदि वे निहित हैं।
पीसीएच फ़ाइल लिस्टिंग निर्भरता से छुटकारा पाने के लिए नहीं है। आपको अभी भी आयात करना चाहिए UIKit.h
या Foundation.h
आवश्यकतानुसार, जैसा कि Xcode टेम्प्लेट करते हैं। PCH का कारण बिल्ड समय में सुधार करना है जब वास्तव में बड़े पैमाने पर हेडर (जैसे UIKit) से निपटना हो।
TWAPIManager.m
, उदाहरण के लिए, किसी अन्य प्रोजेक्ट के लिए, आपको ऐसी त्रुटियां मिलेंगी जो TWALog()
परिभाषित नहीं हैं, जहां कोई संकेत नहीं है कि इसे कहां खोजना है। मैंने कोड को साझा करने की कोशिश कर रही कई बड़ी परियोजनाओं पर बिल्कुल समस्या का सामना किया है। TWAPILog.h
इसे बनाना और आयात करना तुच्छ देव लागत के साथ इसे हल करता है।
इस सवाल के बिना कि यह उचित है या नहीं, आप मैन्युअल रूप से पीसीएच फाइल जोड़ सकते हैं:
प्रोजेक्ट में नई PCH फ़ाइल जोड़ें: नई फ़ाइल> अन्य> PCH फ़ाइल ।
लक्ष्य की बिल्ड सेटिंग विकल्प में, अपने PCH फ़ाइल नाम के लिए Prefix Header का मान सेट करें, परियोजना का नाम उपसर्ग के रूप में (यानी नाम प्रोजेक्ट TestProject
और PCH फ़ाइल नाम के लिए, plist MyPrefixHeaderFile
में मान जोड़ें TestProject/MyPrefixHeaderFile.pch
)।
सुझाव: आप जैसी चीजों का उपयोग कर सकते $(SRCROOT)
या $(PROJECT_DIR)
की जहां डाल पथ को पाने के लिए .pch
इस परियोजना में।
लक्ष्य निर्माण बिल्ड विकल्प पर, Precompile Prefix Header का मान सेट करें YES
।
आपको स्वयं PCH फ़ाइल
ऐड बनाने की आवश्यकता हैNew file -> Other-> PCH file
फिर अपने निर्माण के लिए इस PCH फ़ाइल का पथ जोड़ें setting->prefix header->path
($ (SRCROOT) /filename.pch)
$(PRODUCT_DIR)/$(PRODUCT_NAME)/PrefixHeader.pch
.Pch फ़ाइल जोड़ने के लिए-
1) अपने प्रोजेक्ट में नई .pch फ़ाइल जोड़ें-> नई फ़ाइल-> अन्य-> PCH फ़ाइल
2) अपने प्रोजेक्ट की बिल्ड सेटिंग पर जाएं।
3) "प्रीफ़िक्स हेडर" खोजें। आप Apple LLVM के तहत पा सकते हैं।
४) इसे खेत में पेस्ट करें $(SRCROOT)/yourPrefixHeaderFileName.pch
5) प्रोजेक्ट को स्वच्छ और निर्माण करें। बस!!!
यदि आप मैन्युअल रूप से .pch फ़ाइल जोड़ने का निर्णय लेते हैं और आप x-कोड 6 से पहले की तरह ही Objective-C का उपयोग करना चाहते हैं, तो आपको .pch फ़ाइल में UIKit और Foundation फ्रेमवर्क आयात करना होगा। अन्यथा आपको प्रत्येक हेडर फ़ाइल में इन रूपरेखाओं को मैन्युअल रूप से आयात करना होगा। आप वैसे भी निम्न कोड जोड़ सकते हैं क्योंकि यह प्रयुक्त भाषा के लिए परीक्षण करता है:
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#endif
उपयोग :
$ (PROJECT_DIR) / परियोजना का नाम / PrefixHeader.pch
नई PCH फ़ाइल जोड़ने के लिए bellow चरणों का पालन करें:
(1) नया fiew जोड़ें - आईओएस का चयन करें - अन्य और पीसीएच फ़ाइल
(2) इस PCH फ़ाइल का पथ अपने प्रोजेक्ट में जोड़ें - BuildSetting - Apple LLVM 6.0 भाषा
सेट उपसर्ग हैडर पथ YourApplicationName (रूट-पथ) /filename.pch जोड़ें