2013-05-20 9 views
5

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

कक्षा-दर-कक्षा जाने और एक्सकोड के नामकरण सुविधा का उपयोग करने के बजाय ऐसा करने का कोई आसान तरीका है?

+0

एक्सकोड में एक रिफैक्टर फ़ंक्शन है, जो इसे आसान बना देगा। – trojanfoe

+0

@trojanfoe मुझे इसके बारे में पता है, बात यह है कि नाम बदलने के लिए कई वर्ग और अन्य प्रतीकों हैं। यह अभी भी एक लंबी दर्दनाक प्रक्रिया होगी। –

+2

आप बेहतर शुरुआत करते हैं, अन्यथा आप कभी खत्म नहीं करेंगे। स्रोत कोड बहुत जटिल है कि आप जो चाहते हैं उसे करने के लिए एक-क्लिक समाधान मौजूद हो सकता है। आपको इसे मूल रूप से करना होगा। – trojanfoe

उत्तर

3

एक्सकोड भी पाठ खोज और प्रतिस्थापन प्रदान करता है। यह व्यक्तिगत रिफैक्टरों की तुलना में तेज़ होगा, लेकिन अंत में यह कम स्वचालित है। प्रोजेक्ट को प्रासंगिक निर्भरताओं/स्रोतों (यदि संभव हो) पर पहले कम करके आप चरण-दर-चरण रेफैक्टरिंग तेजी से कर सकते हैं।

हालांकि, लाइब्रेरी में घोषणाओं का नाम बदलने से संबंधित बाइनरी के प्रतीक नाम नहीं बदले जाएंगे। यदि इसे बाइनरी के साथ वितरित किया जाता है, तो फिर नामकरण केवल लिंकर त्रुटियों या (कुछ मामलों में) रनटाइम त्रुटियों में होगा।

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

+0

मैंने पिछले अनुच्छेद में वर्णित विधि के साथ जाने का निर्णय लिया है। यह सिर्फ इस मुद्दे के सबसे साफ दृष्टिकोण की तरह लगता है। धन्यवाद! –

+0

@RanDahan आपका स्वागत है :) – justin

-1

मुझे लगता है कि बस अपने वर्गों का नाम बदलने से बेहतर दृष्टिकोण फेसबुक के ओपन सोर्स कोड को डाउनलोड करना होगा, वहां कक्षाओं का नाम बदलें और नामित हेडर फाइलों के सेट के साथ एक नई स्थैतिक लाइब्रेरी संकलित करें। फिर आप यह सुनिश्चित कर सकते हैं कि कोई टकराव नहीं होता है और आप उन प्रतीकों का उपयोग कर रहे हैं जिन्हें आपने स्वयं नाम दिया है।

मुझे आपको चेतावनी देना चाहिए - हालांकि इस तरह के काम करने से आप इस विशिष्ट मुद्दे से निपटने के बावजूद एसडीके को एक दुःस्वप्न अपडेट कर सकते हैं।

tops -verbose replace "FBSession" with "RDFBSession" Sources/*.[hm] 

यदि आपके पास:

+1

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

+0

यदि वह स्थानीय रूप से अपनी कक्षाओं का नाम बदलता है, तो उसे अभी भी प्रत्येक एफबी एसडीके अपडेट के लिए इसे फिर से करने की आवश्यकता होगी। – Stavash

3

एप्पल tops(1) कहा जाता है एक कमांड लाइन उपकरण है जो पटकथा बड़े पैमाने पर कोड रिफैक्टरिंग लिए बनाया गया है (सी काम करता है, ऑब्जेक्टिव-सी तरीकों, वर्ग, और अन्य टोकन का नाम बदलने) प्रदान करते हैं बहुत सारे प्रतिस्थापन, आप replace... आदेशों को उस फ़ाइल में डाल सकते हैं जिसे आप -scriptfile विकल्प से पास करते हैं। man page में अधिक जटिल आदेश/विकल्प (और उदाहरण) पर अधिक जानकारी है।

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