8

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

निम्नलिखित objc-api.h में एप्पल द्वारा परिभाषित किया गया है:

/* OBJC_ARC_UNAVAILABLE: unavailable with -fobjc-arc */ 
#if !defined(OBJC_ARC_UNAVAILABLE) 
# if __has_feature(objc_arr) 
#  define OBJC_ARC_UNAVAILABLE __attribute__((unavailable("not available in automatic reference counting mode"))) 
# else 
#  define OBJC_ARC_UNAVAILABLE 
# endif 
#endif 

मेरे सी मैक्रो-फू कमजोर है। मैं इसका उपयोग कैसे करूं? या, शायद जांचने के लिए एक बेहतर प्रतीक है?

पीएस मैं पूछता हूं क्योंकि मैं अपने ऐप को पुन: प्रयोज्य पुस्तकालयों से बनाता हूं। मैं यह सुनिश्चित करना चाहता हूं कि प्रत्येक फ़ाइल को सही तरीके से संकलित किया गया हो।

उत्तर

9

निम्नलिखित काम करना चाहिए: अपनी फ़ाइल के शीर्ष पर

#if !__has_feature(objc_arc) 
# error Compile me with ARC, please! 
#endif 

प्लेस यह।

+0

मैक्रो के लिए धन्यवाद। – adonoho

-1

यदि यह एक पूर्ण फ़ाइल है, तो मैं गैर-आर्क संकलक का उपयोग करने के लिए कंपाइलर झंडे में -nono-objc-arc जोड़ने की अनुशंसा करता हूं।

गैर-आर्क संकलक के साथ कोड के "भागों" को संकलित करने के लिए मैक्रो का उपयोग करें। उदाहरण के लिए , यदि आप एक फ्रेमवर्क लिख रहे हैं तो इसका उपयोग करें, जो कि आर्क और गैर-आर्क कोड बेस और रिलीज लिखने के लिए उपयोग किया जाएगा, इस मैक्रो ब्लॉक

+0

आधुनिक Xcode, v4.2 + के रूप में मुगुनथ, एक प्रोजेक्ट में मिश्रित एआरसी और गैर-एआरसी कोड की अनुमति देता है और एआरसी आईओएस v4.0 पर वापस एप्स का समर्थन करता है, मैं मैक्रो रूट से बचना पसंद करता हूं और फ़ाइल को एआरसी में ले जाता हूं मैं नई कार्यक्षमता जोड़ता हूं। कुंजी यह सुनिश्चित करना है कि इस परिवर्तन को मेरे और मेरे क्लाइंट के ऐप्स के नए संस्करणों के रूप में प्रचारित किया गया है। उपर्युक्त मैक्रो यह करता है। आपकी टिप्पणी, विचार और समय के लिए धन्यवाद। एंड्रयू – adonoho

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