2010-10-26 21 views
8

के साथ लाइब्रेरी डिबग करना मेरे पास आईफोन ऐप्स बनाने के दौरान एक्सकोड के साथ पुस्तकालयों के साथ काम करने पर एक सामान्य सवाल है। मैंने एक ऐसे प्रोजेक्ट से एक ढांचा बनाया है जिसे मैं अन्य ऐप्स में इसके कुछ हिस्सों का उपयोग करने के लिए काम कर रहा हूं। यह अब तक बहुत अच्छा काम करता है। लेकिन मुझे नहीं पता कि शामिल ढांचे में शामिल फ़ाइलों में डीबग कैसे करें।एक्सकोड

मुझे उम्मीद है कि उस पर कुछ प्रकार का 'सर्वश्रेष्ठ अभ्यास' प्राप्त होगा।

धन्यवाद एक बहुत
-f

उत्तर

4

आम तौर पर, मैं मुख्य आवेदन के इस परियोजना के एक बाहरी परियोजना निर्भरता के रूप में पुस्तकालय के लिए Xcode प्रोजेक्ट शामिल करेंगे। परियोजना निर्भरताओं का लाभ यह है कि आप एक निर्माण चरण जोड़ सकते हैं जो मुख्य परियोजना के साथ आपकी लाइब्रेरी की ताजा प्रति बनाता है, और निश्चित रूप से यह आपको लाइब्रेरी के कोड में ब्रेकपॉइंट्स सेट करने देगा।

6

स्थिर पुस्तकालयों के साथ कोड का पुन: उपयोग करने के तरीके के बारे में बहुत सी चर्चाएं हुई हैं। मैंने क्लिंट हैरिस द्वारा here वर्णित विधि पर बस गए हैं (जो मुझे लगता है कि शॉन भी सुझाव दे रहा है)। इस तरह से एक परियोजना निर्भरता बनाना आपके प्रोजेक्ट के लक्ष्य (सिम्युलेटर/डिवाइस, डीबग/रिलीज) के लिए लाइब्रेरी को स्वचालित रूप से संकलित करता है, इसलिए आपको चारों ओर बैठे संकलित लाइब्रेरी की चार अलग-अलग प्रतियों की आवश्यकता नहीं है। जब आप चाहें डीबगिंग करते समय यह आपको लाइब्रेरी स्रोत में कदम भी देता है। अंत में, लाइब्रेरी के अपडेट अगली बार उन परियोजनाओं को संकलित किए जाने पर किसी भी लिंक की गई परियोजनाओं में शामिल किए जाते हैं (इसलिए आपको उन परियोजनाओं में पुस्तकालय बाइनरी को पुन: संकलित और पुनर्वितरण करने की आवश्यकता नहीं है)।

+0

अरे टिम! उस संकेत के लिए धन्यवाद। वह एकीकरण महान काम करता है। लेकिन मैं अभी भी ब्रेकपॉइंट्स का उपयोग करके अपनी लाइब्रेरी डीबग करने में सक्षम नहीं हूं। क्या मुझे कोई अतिरिक्त कदम उठाना है? – flohei

+0

मैंने अभी इसके साथ खेला और निम्न पाया: डिफ़ॉल्ट रूप से, जब मैंने अपनी लाइब्रेरी प्रोजेक्ट में ब्रेकपॉइंट सेट किया है तो यह वास्तव में किसी भी लिंक की गई परियोजनाओं में नहीं टूटता है, जैसा कि आप देखते हैं। हालांकि, मैं ब्रेकपॉइंट पर राइट-क्लिक करें, "ब्रेकपॉइंट संपादित करें" का चयन करें और ब्रेकपॉइंट्स विंडो में मैं उस नए ब्रेकपॉइंट को "समूह और फ़ाइलें" अनुभाग में मेरे लिंक किए गए प्रोजेक्ट के नाम पर खींचता हूं। या आप इसे "ग्लोबल ब्रेकपॉइंट्स" पर खींच सकते हैं, लेकिन फिर यह किसी भी लिंक किए गए प्रोजेक्ट में टूट जाएगा। एक बार जब मैंने लिंक किया है तो लिंक किए गए प्रोजेक्ट में ब्रेकपॉइंट काम करता है। क्या यह आपके लिए काम करता है? –

+0

यह काम करता है लेकिन एक गोचा था: यदि आपके पास दोनों परियोजनाएं खुली हैं, तो उपप्रोजेक्ट मूल परियोजना में पूर्ण प्रोजेक्ट के रूप में नहीं दिखाई देगा। तो इसे जोड़ने से पहले सबप्रोजेक्ट को बंद करें। (एक्सकोड शिकायत करता है कि यह डेटा अखंडता की समस्या को दो स्थानों पर एक ही प्रोजेक्ट खोलने का कारण बन जाएगा।) – nont