2012-05-03 22 views
5

वीएस से आने वाले एक नए एमएसी डेवलपर के रूप में मैं वास्तव में 'ढांचा' नहीं लेता हूं। अगर मैं अपनी परियोजना में एक ढांचा जोड़ता हूं, तो क्या यह स्वचालित रूप से इसका मतलब है कि जब मैं #include <SomeFile.h> करता हूं तो हेडर को मिलना चाहिए?एक्सकोड 3 - लाइब्रेरी सर्च पथ और प्रोजेक्ट फ्रेमवर्क के बीच संबंध

मुझे लगता है कि कुछ मामलों में मुझे हेडर खोज पथ भी जोड़ना है। क्या इसका मतलब है कि ढांचा सही काम नहीं कर रहा है?

उत्तर

3

यदि ढांचे को सही ढंग से लिखा गया है, तो इसमें शीर्षलेख के साथ-साथ वास्तविक लिंक करने योग्य (बाइनरी) फ़ाइल भी शामिल है। कंपाइलर (जीसीसी पहले, एलएलवीएम-क्लैंग हाल ही में) ढांचे के पथ को पहचानता है और स्वचालित रूप से जानता है कि ढांचे के शीर्षकों के लिए कहां खोजें। कुछ कोने मामलों हालांकि रहे हैं:

  1. आप/usr/lib से एक रूपरेखा एक पारंपरिक यूनिक्स पुस्तकालय (libsqlite3.dylib, libxml2.dylib आदि) शामिल नहीं करते हैं, लेकिन वास्तव में। फिर यह मामला हो सकता है कि लाइब्रेरी में एक अलग (मानक) में पथ शामिल है; उदाहरण के लिए, ग्लिब के मामले में यह आम है। इस मामले में आपको अपने हेडर खोज पथ में /usr/include/glib-2.0 जोड़ना होगा।
  2. विपरीत मामला: जब आप "छतरी" ढांचे में से कुछ का सामना करते हैं (उदाहरण के लिए, कोर ऑडियो को छोटे उप-फ्रेमवर्क जैसे ऑडियोटूलबॉक्स.फ्रेमवर्क आदि में विभाजित किया जाता है), तो उस विशेष ढांचे में एक लिंक करने योग्य गतिशील नहीं होता है लाइब्रेरी, केवल हेडर।

मुझे उम्मीद है कि इससे मदद मिलती है।

4

रूप से परिभाषित किया गया Apple Conceptual Documentation:

एक रूपरेखा एक पदानुक्रमित निर्देशिका कि इस तरह के एक गतिशील साझा लाइब्रेरी, निब फ़ाइलें, छवि फ़ाइलें, स्थानीय तार, हेडर फाइलें, और संदर्भ के रूप में संसाधनों, साझा encapsulates है एकल पैकेज में प्रलेखन।

दूसरे शब्दों में, यह संसाधनों का एक संकलन है जिसका उपयोग एक या अधिक अनुप्रयोगों द्वारा किया जा सकता है, और यह स्वयं ही एक आवेदन नहीं है।

Apple Conceptual Documentation द्वारा विस्तृत:

आप #include निर्देशों का उपयोग अपने कोड में ढांचे हेडर फाइल शामिल हैं। यदि आप उद्देश्य-सी में काम कर रहे हैं, तो आप निर्देश के बजाय #import निर्देश का उपयोग कर सकते हैं। दो निर्देशों के समान मूल परिणाम हैं। लेकिन #import निर्देश गारंटी देता है कि एक ही शीर्षलेख फ़ाइल को एक से अधिक बार शामिल नहीं किया गया है। वहाँ ढांचे हेडर के लिए दो तरीके हैं:

#include <Framework_name/Header_filename.h> 
#import <Framework_name/Header_filename.h> 

दोनों मामलों में, Framework_name ढांचे के नाम और Header_filename है कि ढांचे में या में से एक में एक हैडर फ़ाइल का नाम है इसके subframeworks।

फ्रेमवर्क हेडर फ़ाइलों सहित, केवल मास्टर फ्रेमवर्क हेडर फ़ाइल शामिल करना पारंपरिक है। मास्टर हेडर फ़ाइल हेडर फ़ाइल है जिसका नाम ढांचे के नाम से मेल खाता है।उदाहरण के लिए, पता पुस्तिका ढांचे में मास्टर हेडर फ़ाइल है जिसका नाम AddressBook.h है।

कस्टम चौखटे में शामिल करने के लिए:

चौखटे के लिए अपनी परियोजना के लिंक है कि मानक स्थानों में से किसी में शामिल नहीं हैं, आप स्पष्ट रूप से है कि इससे पहले कि ढांचे Xcode पता लगा सकते हैं का स्थान निर्दिष्ट करना आवश्यक है इसके हेडर फाइलें इस तरह के ढांचे का स्थान निर्दिष्ट करने के लिए, “Framework Search Paths” option of your Xcode project पर ढांचे वाली निर्देशिका जोड़ें। एक्सकोड निर्देशिकाओं की इस सूची को कंपाइलर और लिंकर से पास करता है, जो दोनों ढांचे संसाधनों की खोज के लिए सूची का उपयोग करते हैं।