2012-08-27 9 views
6

मेरा मानना ​​है कि मैं सफलतापूर्वक उपयोग चाप करने के लिए एप्लिकेशन द्वारा परिवर्तित 'Refactor -> ऑब्जेक्टिव-सी एआरसी में बदलें' उपकरण, लेकिन केवल अपने प्रोजेक्ट लक्ष्यों में से एक सेटिंग है:ने अपना ऐप एआरसी में परिवर्तित कर दिया लेकिन केवल 1 लक्ष्य एआरसी सेटिंग को हाँ के रूप में दिखाता है?

enter image description here

और अगर मैं कुछ भी बना सकते हैं आईबी का उपयोग करके यह अभी भी बनाए रखने/रिलीज/डेलोक कोड उत्पन्न कर रहा है?

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

मैं इन अन्य लक्ष्यों को एआरसी का उपयोग करने के लिए कैसे प्राप्त करूं - या सुनिश्चित करें कि वे एआरसी का उपयोग कर रहे हैं?

+0

इन लक्ष्यों के लिए झंडे को 'हां' पर सेट करें और देखें कि क्या यह कंपाइलर से बहुत चिल्लाने का कारण बनता है। यदि ऐसा नहीं होता है, तो आप कर चुके हैं :) – dasblinkenlight

+0

मेरे लिए झंडे सेट करने के लिए कोई जगह नहीं है, यह विकल्प – Slee

+0

के लिए बिल्ड सेटिंग्स के तहत दिखाई नहीं देता है जब आप बिल्ड विकल्प को देखते हैं "सी/सी ++/उद्देश्य-सी के लिए कंपाइलर", यह कहना चाहिए "डिफ़ॉल्ट कंपाइलर (ऐप्पल एलएलवीएम कंपाइलर ...)" यदि यह "एलएलवीएम जीसीसी 4.2" पर सेट है तो "स्वचालित संदर्भ गणना" एक विकल्प नहीं होगा। – nont

उत्तर

4

हाँ कहने के लिए झंडे को मैन्युअल रूप से बदलें। यह भी जांचना और सुनिश्चित करना है कि किसी भी फाइल में कंपाइलर ध्वज "-फनो-ओबीजेसी-आर्क" सेट नहीं है। (मैंने उन परियोजनाओं में भाग लिया है जो इस तरह से आधे रूपांतरित हुए थे।)

यदि आप अभी भी स्मृति समस्याओं में चल रहे हैं, तो लीक्स इंस्ट्रूमेंट चलाएं। एआरसी के साथ भी, आप अभी भी retain cycles जैसे मेमोरी लीक कर सकते हैं जहां माता-पिता के संबंध एक-दूसरे को बनाए रखते हैं। ऐसे मामले में, आपको कमजोर पॉइंटर्स का उपयोग करने की आवश्यकता है।

+0

रूकी चाल - मैंने कुछ कारणों से अन्य सभी लक्ष्यों के लिए 'सभी' टॉगल किया था और न केवल 'मूल' सेटिंग्स – Slee