मैं कैसे सेट कर सकता हूं NSZombieEnabled
और CFZombieLevel
Xcode 4 में मेरी निष्पादन के लिए?
मैं कैसे सेट कर सकता हूं NSZombieEnabled
और CFZombieLevel
Xcode 4 में मेरी निष्पादन के लिए?
जवाबों:
Xcode 4.x प्रेस में
(या क्लिक Menubar
> Product
> Scheme
> Edit Scheme
)
"डायग्नोस्टिक्स" टैब चुनें और "ज़ोंबी ऑब्जेक्ट्स सक्षम करें" पर क्लिक करें:
यह जारी की गई वस्तुओं को NSZ जॉम्बी इंस्टेंस में बदल देता है जो फिर से उपयोग किए जाने पर कंसोल चेतावनी को प्रिंट करते हैं। यह एक डीबगिंग सहायता है जो मेमोरी उपयोग को बढ़ाती है (कोई वस्तु वास्तव में जारी नहीं होती है) लेकिन त्रुटि रिपोर्टिंग में सुधार करती है।
एक विशिष्ट मामला तब होता है जब आप किसी ऑब्जेक्ट को ओवर-रिलीज़ करते हैं और आपको पता नहीं होता है कि कौन सा है:
-[UITableView release]: message sent to deallocated instance
जब आप App Store सबमिशन के लिए एप्लिकेशन को संग्रहीत करते हैं तो इस Xcode सेटिंग को अनदेखा कर दिया जाता है। अपने आवेदन को जारी करने से पहले आपको कुछ भी छूने की आवश्यकता नहीं है।
प्रेसिंग ⌥⌘Rउत्पाद को चुनने के समान है> Altकुंजी दबाए रखते हुए चलाएँ ।
"ज़ोंबी ऑब्जेक्ट्स सक्षम करें" चेकबॉक्स पर क्लिक करना मैन्युअल रूप से टैब के तर्क के "पर्यावरण चर" अनुभाग में "NSZombieEnabled = YES" को जोड़ने के समान है।
CMD-<
( CMD-SHIFT-comma
), याProduct -> Scheme -> Edit SCheme...
जैनो का जवाब इसे खोजने का सबसे आसान तरीका है .. दूसरा तरीका यह होगा कि आप स्कीम ड्रॉप डाउन बार पर क्लिक करें -> स्कीम को एडिट करें -> आर्ग्युमेंट्स टैब और फिर एनएएसजॉम्बी इनेबल्ड इनवायरमेंटल वेरिएबल्स कॉलम और यस वैल्यू में जोड़ें ...
मुझे यह विकल्प अधिक सुविधाजनक लगता है:
Profile
Zombies
जैसे ही एक ज़ोंबी का पता लगाया जाता है, तब एक साफ "ज़ोंबी स्टैक" प्राप्त करें जो आपको दिखाता है कि प्रश्न में ऑब्जेक्ट आवंटित किया गया था और इसे कहाँ रखा गया था या जारी किया गया था:
Event Type RefCt Responsible Caller
Malloc 1 -[MyViewController loadData:]
Retain 2 -[MyDataManager initWithBaseURL:]
Release 1 -[MyDataManager initWithBaseURL:]
Release 0 -[MyViewController loadData:]
Zombie -1 -[MyService prepareURLReuqest]
Xcode योजनाओं के नैदानिक टैब का उपयोग करने की तुलना में लाभ :
यदि आप डायग्नोस्टिक टैब में विकल्प को अनचेक करना भूल जाते हैं तो मेमोरी से कोई ऑब्जेक्ट जारी नहीं किया जाएगा।
आपको एक अधिक विस्तृत स्टैक मिलता है जो आपको दिखाता है कि आपकी भ्रष्ट वस्तु को किन तरीकों से आवंटित / जारी किया गया था या बरकरार रखा गया था।
iOS Simulator > All
मुख्य टेम्प्लेट सूची से चुन रहे हैं (आप केवल सिम्युलेटर में ऐसा कर सकते हैं)
Xcode 4.2 में
या > मेनू Edit Scheme
से चुनेंProduct
Scheme
चयन Enable Zombie Objects
के लिए फार्म Diagnostics
टैब
विकल्प के रूप में, यदि आप .xcconfig
फाइलें पसंद करते हैं तो आप इस लेख को पढ़ सकते हैं https://therealbnut.wordpress.com/2012/01/01/setting-xcode-4-0-environment-variables-from-a-script/
कोको एक शांत सुविधा प्रदान करता है जो ऐसी स्थितियों को डीबग करने के लिए आपकी क्षमताओं को बढ़ाता है। यह एक पर्यावरण चर है जिसे NSZombieEnabled कहा जाता है, इस वीडियो को देखें जो NSZombieEnabled को उद्देश्य-सी में सेट करने के बारे में बताता है।
Xcode में 4.3:
आप स्कीम ड्रॉप डाउन बार -> एडिट स्कीम -> आर्ग्युमेंट्स टैब पर क्लिक करें और फिर एनवायरमेंटल वेरिएबल्स कॉलम में एनजेडइनेबल्ड जोड़ें और वैल्यू कॉलम में YES जोड़ें।
शुभ लाभ !!!