2013-02-07 8 views
7

मैं open source app को संशोधित कर रहा हूं जो गैर-एआरसी है। मेरा अधिकांश आईओएस अनुभव एआरसी सक्षम उद्देश्य-सी के साथ है, इसलिए जब मैं प्रोजेक्ट में नई फाइलें बना और जोड़ता हूं तो मैं उन्हें compiler flags (विशेष रूप से जब मुझे अजीब गैर-आर्क कोड bugs का सामना करना पड़ता है) का उपयोग करके एआरसी अनुपालन करना होता है।एक ही आईओएस परियोजना में एआरसी और गैर-एआरसी कोड मिश्रण करना कितना सुरक्षित है?

जो चीज मुझे रात में रखती है वह सवाल है: यह मेरी परियोजना में आर्क और गैर-आर्क कोड को मिश्रित करने के लिए कितना सुरक्षित और विश्वसनीय है? जब क्यूए समय आता है तो यह मेमोरी लीक और प्रदर्शन इत्यादि जैसी चीजों के परीक्षण के लिए एक दुःस्वप्न होगा? एक और तरीका पूछा .. क्या मौजूदा गैर-आर्क कोड को आर्क कोड में परिवर्तित करने और संभावित परेशानी से छुटकारा पाने के लायक है?

+0

वे कंपाइलर झंडे हैं, लिंकर झंडे नहीं हैं। इसके अलावा, एआरसी का उपयोग करने से आपको लीक और प्रदर्शन के लिए अपने ऐप का परीक्षण करने की आवश्यकता नहीं होती है। –

+0

मेरा बुरा .. तय .. – abbood

उत्तर

9

आप बिना किसी समस्या के स्वतंत्र रूप से मिश्रण कर सकते हैं।

+0

हां, वास्तव में यह वह उत्तर है जिसकी आपको आवश्यकता है। एक चेतावनी है (एआरसी को ओवरराइज़ करने में धोखा देने वाले खराब नामकरण सम्मेलनों के साथ प्रीकंपिल्ड कोड के बारे में कुछ) लेकिन मुझे नहीं लगता कि यह इस स्थिति में लागू होता है। – borrrden

+0

गलती .. अच्छी तरह से मैं आप दोनों का बहुत सम्मान करता हूं और मैं आपके दोनों तकनीकी अनुभवों को स्वीकार करता हूं .. मैं कुछ सबूत या दस्तावेज़ीकरण की उम्मीद कर रहा था? या आपके उत्तर केवल व्यक्तिगत अनुभव (जो अभी भी अपने आप में पर्याप्त हो सकते हैं) – abbood

+1

@abbood - एआरसी जादू नहीं है, यह बस संकलन समय पर आपके कोड को देखता है और आवश्यक रखरखाव और रिलीज जोड़ता है। जेनरेट कोड उस कोड से अलग नहीं है जिसे आपने स्वयं लिखा होगा। [ट्रांज़िशनिंग से एआरसी रिलीज नोट्स] तक (https://developer.apple.com/library/mac/#releasenotes/ObjectiveC/RN-TransitioningToARC/Introduction/Introduction.html#//apple_ref/doc/uid/TP40011226): "यदि आप कुछ फ़ाइलों के लिए मैन्युअल संदर्भ गिनती का उपयोग करना अधिक सुविधाजनक हैं तो आप प्रति फ़ाइल आधार पर एआरसी का उपयोग करना भी चुन सकते हैं।" – sosborn

0

मैं यह सुरक्षित है के बाद से कुछ कोड जब एआरसी इस विधि के रूप में इस तरह के चालू होने पर मना किया है नहीं लगता है:

- (void)dealloc 
{ 
    [super dealloc]; 
} 

और निश्चित रूप से जब प्रदर्शन के लिए जारी

[exampleVariable release]; 

कौन मौजूद हो सकते हैं गैर-एआरसी परियोजनाओं में।

+0

मेरा प्रश्न यह मान रहा है कि इस तरह के सभी गैर-सुरक्षित कोड को पहले से ही जिम्मेदार ठहराया गया है (यानी बाहर निकाला गया) – abbood

+1

वैसे, यह पूरी तरह से सुरक्षित है क्योंकि यह एकमात्र चीज है जो मायने रखती है। –

+1

गैर-एआरसी कोड के लिए लेखांकन अनिवार्य रूप से इसे एआरसी कोड नहीं बनायेगा? – devios1

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