2013-08-07 5 views
8

मैं एक्सकोड 4.6.2 में एक आईफोन ऐप विकसित कर रहा हूं जिसमें केवल एक लक्ष्य है, और मैंने देखा है कि कुछ महत्वपूर्ण फाइलें मेरे लक्ष्य के सदस्य नहीं हैं। मेरी कस्टम हेडर फाइलों में से कोई भी लक्ष्य सदस्यता का हिस्सा नहीं है, न ही मेरा Info.plist, मेरा उपसर्ग शीर्षलेख, या उत्पाद "MyApp.app" है।एक्सकोड: कौन सी फाइलों को मेरे लक्ष्य के सदस्य होने की आवश्यकता है? (लक्ष्य सदस्यता)

जिस तरह से मैं लक्ष्य समझता हूं, इन फ़ाइलों को निश्चित रूप से लक्ष्य के सदस्य होने की आवश्यकता होती है।

मेरा प्रश्न है: ये फ़ाइलें मेरे लक्ष्य के सदस्य क्यों नहीं हैं?

SO पर चारों ओर खोज करने के बाद, समान प्रश्नों ने कुछ अंतर्दृष्टि उत्पन्न की है, लेकिन उस प्रश्न का पूरा उत्तर नहीं है। अंतर्दृष्टि मैं एकत्र किया है:

  1. हेडर फाइल अपने लक्ष्य के सदस्यों क्योंकि वे "कॉपी हेडर" में जुड़े हुए हो चरण का निर्माण नहीं कर रहे हैं।

    • यह उचित लगता है, लेकिन मैं नहीं है एक कॉपी हेडर बिल्ड चरण
  2. Info.plist और Prefix.pch लक्ष्य के सदस्यों क्योंकि Info.plist जुड़ा हुआ हो जाता है नहीं कर रहे हैं "कॉपी बंडल संसाधन" में चरण का निर्माण, और Info.plist मुख्य/मान प्रविष्टि उपसर्ग हैडर (Prefix.pch)

    • मैं सकारात्मक नहीं कर रहा हूँ के लिए अंक मौजूद हैं, जो वास्तव में यह कैसे है काम करता है

उत्तर

12

शीर्षलेख फ़ाइलें अन्य स्रोत फाइल संदर्भ हैं ताकि वे जान सकें कि कक्षा के लिए इंटरफ़ेस क्या है। उन्हें बाइनरी के हिस्से के रूप में जरूरी नहीं है, इसलिए उन्हें अंतिम उत्पाद में शामिल करने की आवश्यकता नहीं है।

Info.plist एक विशेष मामला है क्योंकि यह एप्लिकेशन बंडल को स्वयं परिभाषित करता है, इसलिए इसे अलग से संसाधित किया जाता है।

सामान्य शब्दों में, आप फ़ाइलों को अपने लक्ष्य के सदस्यों को जब वे होना चाहता हूँ:

  • निष्पादन का हिस्सा हैं (उदाहरण के लिए कार्यान्वयन (.m) फ़ाइलें या पुस्तकालयों), या
  • में फ़ाइलों के रूप में शामिल किए गए हैं आवेदन बंडल (उदाहरण के लिए छवियों)।

यदि आपको केवल बिल्ड प्रक्रिया के हिस्से के रूप में उपयोग किया जाता है और रनटाइम पर इसकी आवश्यकता नहीं होती है तो आपको अपने लक्ष्य के सदस्य होने की आवश्यकता नहीं होती है। आम तौर पर यह प्रीकंपील्ड हेडर (.pch) सहित किसी भी प्रकार की हेडर फ़ाइल है।

+0

इससे बहुत समझदारी होती है। एक्सकोड को हेडर की आवश्यकता है, लेकिन मेरा ऐप नहीं है। तो Info.plist सिर्फ एप्लिकेशन बंडल को परिभाषित करता है और वास्तव में इसमें पैक नहीं होता है? –

2

केवल .m फ़ाइलें और संसाधन फ़ाइलों लक्ष्य का हिस्सा है, नहीं .h हैं।

आप सही हैं: Info.plist फ़ाइलें और शीर्षलेख सभी बिल्ड सेटिंग्स में संदर्भित हैं (जो फिर से विशिष्ट लक्ष्य हैं)।

3

शीर्षकों को केवल ढांचे के लक्ष्य के लिए प्रतिलिपि बनाने की आवश्यकता है, और केवल इसलिए कि वे ढांचे के रिलीज का हिस्सा हैं (वे उपयोगकर्ताओं को यह जानने की अनुमति देते हैं कि ढांचे का उपयोग कैसे करें)। ऐप्स को हेडर की आवश्यकता नहीं होती है क्योंकि वे स्टैंड अकेले इकाइयों को संकलित कर रहे हैं। हेडर (और पीएचसी फाइल) का उपयोग संकलन के दौरान किया जाता है लेकिन रनटाइम पर इसकी आवश्यकता नहीं होती है।

info.plist को अलग-अलग संभाला जाता है। इसे आमतौर पर कॉपी नहीं किया जा सकता है क्योंकि प्रोजेक्ट में इसे आमतौर पर "Info.plist" नहीं कहा जाता है। फ़ाइल में ऐप में मौजूद होना भी अनिवार्य है, इसलिए एक्सकोड आपको इसे शामिल करने का विकल्प नहीं देता है।

+0

लघु और प्यारा उत्तर, स्वयं सब कुछ समझाओ। – technerd

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