2013-02-15 38 views
55

क्या मेरे उद्देश्य-सी ऑब्जेक्ट्स के आवंटन और विध्वंस को ट्रैक करना संभव है? उदाहरण के लिए यदि मेरे पास कक्षा पुस्तक है, तो मैं पुस्तक प्रकार की वस्तुओं के सभी आवंटन और विध्वंस को ट्रैक करना चाहता हूं। मैं सभी डिफ़ॉल्ट एसकेडी कक्षाओं को ट्रैक कर सकता हूं, जैसे UIViewController, UIWindow, UIView, NSDictionary और यह सब, लेकिन मैं अपने परिभाषित वर्गों से बनाए गए ऑब्जेक्ट्स को भी ट्रैक करना चाहता हूं।इंस्ट्रूमेंट्स आवंटन उपयोगकर्ता परिभाषित वर्गों की वस्तुओं के आवंटन और dealloc को ट्रैक करें

उत्तर

212

आप अपनी ऑब्जेक्ट्स के जीवन चक्र को ट्रैक करने के लिए आवंटन उपकरण का उपयोग कर सकते हैं। यदि आप "आवंटन" टेम्पलेट का उपयोग करते हैं, तो यह malloc और free ईवेंट रिकॉर्ड करने के लिए कॉन्फ़िगर किया गया है। आप आवंटन साधन सेटिंग्स में "रिकार्ड संदर्भ मायने रखता है" पर चेकबॉक्स बदल कर यह भी retain, release, और autorelease घटनाओं को दर्ज करने के कॉन्फ़िगर करना चाहते हैं हो सकता है:

record reference counts checkbox

(आप इस जबकि उपकरण रिकॉर्डिंग है टॉगल नहीं कर सकते , यह Xcode 9 के लिए जैसे ही आप अपने टेम्पलेट का चयन के रूप में डिफ़ॉल्ट रूप से शुरू होता है जो)

अद्यतन:। एप्पल इसे और अधिक मुश्किल इन सेटिंग्स को खोजने के लिए बना दिया है। अब आपको आवंटन उपकरण का चयन करने की आवश्यकता है, फिर मेनू बार से फ़ाइल> रिकॉर्डिंग विकल्प चुनें।

Object Summary setting for Detail pane

:

अपने चलाने के बाद, आप अपने वस्तुओं आवंटन> सांख्यिकी> वस्तु सारांश दृश्य है, जो विस्तार से फलक लिए डिफ़ॉल्ट सेटिंग है (खिड़की के नीचे आधा) का उपयोग कर प्राप्त कर सकते हैं

आप वस्तुओं है कि इससे पहले कि आप रन बंद कर दिया गया था पुनः आवंटित की जाती देखना चाहते हैं, तो आप "सभी वस्तुओं को बनाया गया" के लिए आवंटन जीवनकाल "बनाया गया & अभी भी जीवित" से (डिफ़ॉल्ट) की स्थापना को बदलने की जरूरत:

Allocation Lifespan setting

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

Searching

अब सूची दृश्य Tile के प्रत्येक उदाहरण दिखाता है। (ध्यान दें कि आपको ऑब्जेक्ट की वास्तविक श्रेणी दर्ज करना है, सुपरक्लास नहीं। NSObject दर्ज करना केवल [NSObject alloc] द्वारा बनाए गए ऑब्जेक्ट्स को मिलेगा, न कि [Tile alloc] द्वारा बनाए गए ऑब्जेक्ट्स।) मैं किसी विशेष उदाहरण के लिए इतिहास देखकर इतिहास देख सकता हूं कि उदाहरण के पते के आगे तीर:

Getting detail

एक वस्तु के लिए विवरण दृश्य में, मैं malloc और free घटनाओं को देख सकते हैं और, के बाद से मैं पर "रिकार्ड संदर्भ मायने रखता है" कर दिया, मैं भी देख सकते हैं retain, release, और autorelease संदेश और ऑब्जेक्ट की बनाए रखने की गिनती पर उनके प्रभाव।मैं उन घटनाओं से किसी के लिए कॉल स्टैक को देखने के लिए चाहते हैं, तो मैं खिड़की के दाईं ओर बढ़ाया विस्तार पैनल खोल सकते हैं:

extended detail of call stack

+0

यह एक भयानक पोस्ट है। इंटरैक्टिव छवियों के लिए +1। इन स्क्रीनशॉट बनाने के लिए आपने किस ऐप का उपयोग किया था? – gyurisc

+8

मैंने स्क्रीन रिकॉर्ड करने के लिए स्क्रीनफ्लो का उपयोग किया और प्रत्येक वीडियो की लंबाई और आकार को संपादित किया। तब मैंने प्रत्येक वीडियो को एनिमेटेड जीआईएफ में बदलने के लिए फ़ोटोशॉप का उपयोग किया। –

+2

@robmayoff fabulas नौकरी, आपके जैसे लोग आईओएस समुदाय को अधिक से अधिक सीखने में मदद कर रहे हैं। – Alok