2012-04-27 25 views
5

मैं Xcode के साथ iOS एप्लिकेशन के विकास के लिए कुछ हद तक उत्सुक हूँ, यहाँ तक कि हम विशेष रूप से राज्य हालांकि:जब प्रोजेक्ट इसका उपयोग करता है तो एक्सकोड स्वचालित रूप से क्वार्ट्जकोर से लिंक नहीं होता है?

#import <QuartzCore/QuartzCore.h> 
हमारे ViewController.h में

, जब परियोजना से जुड़ा हुआ है, QuartzCore पुस्तकालय स्वचालित रूप से जुड़ा हुआ नहीं है। ऐसा क्यों है?

+0

+1 आपके प्रश्न के लिए ... मुझे भी क्वार्ट्जकोर फ्रेमवर्क जोड़ने के बाद भी एक ही समस्या का सामना करना पड़ा। लंबे समय तक इस वाक्यविन्यास ** # आयात ** को Google करना था। अगर इसके लिए स्वत: पूर्ण सुविधा थी तो इसे पसंद करेंगे। –

उत्तर

11

क्योंकि हेडर आयात करना लाइब्रेरी के विरुद्ध लिंक करने के लिए किसी भी तरह से जुड़ा हुआ नहीं है।

आपको सूची पुस्तकालयों में क्वार्ट्जकोर फ्रेमवर्क जोड़ने की आवश्यकता होगी जो आपके लक्षित लिंक के खिलाफ हैं।

enter image description here

क्यों Xcode स्वचालित रूप से ऐसा नहीं करता है?

ठीक है, आप जो शीर्षलेख आयात कर रहे हैं वे वास्तव में उस ढांचे का हिस्सा हैं। इसलिए एक्सकोड को अपने सभी ढांचे के माध्यम से स्कैन करना होगा, उनके शीर्षलेखों की जांच करनी होगी और संभावित रूप से कनेक्ट किए गए पुस्तकालयों को स्वचालित रूप से लिंक करना होगा। यह निश्चित रूप से ओएस से संबंधित ढांचे के लिए करने योग्य है लेकिन कस्टम ढांचे के लिए असंभव के करीब है जब तक कि एक्सकोड अपने स्थान को नहीं जानता। कभी-कभी, ऐप्स वास्तव में लाइब्रेरी के विरुद्ध लिंक करने के लिए नहीं चाहते हैं क्योंकि वे उदा। एक शीर्षलेख में परिभाषित एक enum।

2

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

+1

हाँ, दिए गए एक्सकोड को आपके प्रोजेक्ट में आपके पास जो कुछ भी है, उसे स्वचालित रूप से स्वचालित करने के लिए भी स्वचालित है, यह तब भी लिंक नहीं है जब आपको यह स्पष्ट हो कि आपको इसकी आवश्यकता है, कुछ अजीब बात है ... लेकिन हो सकता है कि यह गलती से बहुत अधिक लिंक कर सके यदि हमारे पास अतिरिक्त ' # आयात' है कि हमने वास्तव में –

+0

का उपयोग नहीं किया है स्पष्ट सापेक्ष है। कुछ लोग क्वार्ट्ज से नफरत कर सकते हैं या इसका उपयोग नहीं करना चाहते हैं (छोटे समूह, मुझे पता है), लेकिन ऐसे बड़े और ग्राफिक्स गहन ढांचे के साथ स्वत: जोड़ने से हर कोई क्या नहीं चाहता, खासकर जब सीजी क्वार्ट्ज के लिए तैयार हो। – CodaFi

2

बिंदु यह है कि एक्सकोड को यह जानने का कोई तरीका नहीं है कि आपकी परियोजना को क्वार्ट्ज कोर फ्रेमवर्क से लिंक करना चाहिए।

#import <QuartzCore/QuartzCore.h> यह कहना पर्याप्त नहीं है कि आपको क्वार्ट्ज कोर फ्रेमवर्क की आवश्यकता है। आप अपनी खुद की लाइब्रेरी लिख सकते हैं जिसमें QuartzCore.h नामक हेडर फ़ाइल शामिल है और उसे QuartzCore नामक फ़ोल्डर के नीचे रखा गया है। यदि आपके पास पथ खोजने वाली फाइलें शामिल हैं, तो इसका उपयोग करना ठीक है, जब तक कि आप अपनी प्रोजेक्ट में आधिकारिक क्वार्ट्ज कोर फ्रेमवर्क भी नहीं जोड़ते (जो विवादों की ओर जाता है)।

अन्य उदाहरण भी हैं। जब आप किसी .NET प्रोजेक्ट के लिए विजुअल स्टूडियो में नेमस्पेस आयात करते हैं, तो यह स्वचालित रूप से किसी भी असेंबली को आपके प्रोजेक्ट के "संदर्भ" में नहीं जोड़ता है। ऐसा इसलिए है क्योंकि आप एक थर्ड-पार्टी असेंबली को संदर्भ के रूप में जोड़ सकते हैं जिसमें समान नामस्थान है। आप आधिकारिक .NET Framework असेंबली का एक अलग संस्करण भी जोड़ सकते हैं।

+0

असल में, आप उन ओएस से संबंधित आयात प्रदान करते हैं जो उन्हें पहचानने के लिए संकेतों से अधिक/कम उपयोग करते हैं, जिन्हें गैर उपयोगकर्ता शीर्षलेख (जिन्हें उद्धरणों का उपयोग करके चिह्नित किया जाता है) – Till

+0

आम तौर पर आप सही कह रहे हैं।लेकिन अभी भी कंपाइलर के अतिरिक्त पथ को पास करना संभव है और इसे <> फॉर्म का उपयोग करते समय उपयोगकर्ता शीर्षकों की खोज करना संभव है। Http://stackoverflow.com/questions/1044360/import-using-angle-brackets-and-quote-marks का संदर्भ लें। – Hailei