क्या मेरे उद्देश्य-सी ऑब्जेक्ट्स के आवंटन और विध्वंस को ट्रैक करना संभव है? उदाहरण के लिए यदि मेरे पास कक्षा पुस्तक है, तो मैं पुस्तक प्रकार की वस्तुओं के सभी आवंटन और विध्वंस को ट्रैक करना चाहता हूं। मैं सभी डिफ़ॉल्ट एसकेडी कक्षाओं को ट्रैक कर सकता हूं, जैसे UIViewController, UIWindow, UIView, NSDictionary और यह सब, लेकिन मैं अपने परिभाषित वर्गों से बनाए गए ऑब्जेक्ट्स को भी ट्रैक करना चाहता हूं।इंस्ट्रूमेंट्स आवंटन उपयोगकर्ता परिभाषित वर्गों की वस्तुओं के आवंटन और dealloc को ट्रैक करें
उत्तर
आप अपनी ऑब्जेक्ट्स के जीवन चक्र को ट्रैक करने के लिए आवंटन उपकरण का उपयोग कर सकते हैं। यदि आप "आवंटन" टेम्पलेट का उपयोग करते हैं, तो यह malloc
और free
ईवेंट रिकॉर्ड करने के लिए कॉन्फ़िगर किया गया है। आप आवंटन साधन सेटिंग्स में "रिकार्ड संदर्भ मायने रखता है" पर चेकबॉक्स बदल कर यह भी retain
, release
, और autorelease
घटनाओं को दर्ज करने के कॉन्फ़िगर करना चाहते हैं हो सकता है:
(आप इस जबकि उपकरण रिकॉर्डिंग है टॉगल नहीं कर सकते , यह Xcode 9 के लिए जैसे ही आप अपने टेम्पलेट का चयन के रूप में डिफ़ॉल्ट रूप से शुरू होता है जो)
अद्यतन:। एप्पल इसे और अधिक मुश्किल इन सेटिंग्स को खोजने के लिए बना दिया है। अब आपको आवंटन उपकरण का चयन करने की आवश्यकता है, फिर मेनू बार से फ़ाइल> रिकॉर्डिंग विकल्प चुनें।
:
अपने चलाने के बाद, आप अपने वस्तुओं आवंटन> सांख्यिकी> वस्तु सारांश दृश्य है, जो विस्तार से फलक लिए डिफ़ॉल्ट सेटिंग है (खिड़की के नीचे आधा) का उपयोग कर प्राप्त कर सकते हैं
आप वस्तुओं है कि इससे पहले कि आप रन बंद कर दिया गया था पुनः आवंटित की जाती देखना चाहते हैं, तो आप "सभी वस्तुओं को बनाया गया" के लिए आवंटन जीवनकाल "बनाया गया & अभी भी जीवित" से (डिफ़ॉल्ट) की स्थापना को बदलने की जरूरत:
एक विशिष्ट वर्ग की वस्तुओं को खोजने के लिए, विंडो टूलबार के दाहिने सिरे पर खोज क्षेत्र में कक्षा का नाम टाइप करके शुरू करें। फिर सूची दृश्य के श्रेणी कॉलम में कक्षा का नाम, उस पर माउस, और उसके आगे दिखाई देने वाले तीर पर क्लिक करें। उदाहरण के लिए, मेरे ऐप एक वर्ग Tile
नामित है, इसलिए मुझे लगता है कि के लिए खोज और फिर तीर सूची दृश्य में Tile
के बगल में क्लिक करें:
अब सूची दृश्य Tile
के प्रत्येक उदाहरण दिखाता है। (ध्यान दें कि आपको ऑब्जेक्ट की वास्तविक श्रेणी दर्ज करना है, सुपरक्लास नहीं। NSObject
दर्ज करना केवल [NSObject alloc]
द्वारा बनाए गए ऑब्जेक्ट्स को मिलेगा, न कि [Tile alloc]
द्वारा बनाए गए ऑब्जेक्ट्स।) मैं किसी विशेष उदाहरण के लिए इतिहास देखकर इतिहास देख सकता हूं कि उदाहरण के पते के आगे तीर:
एक वस्तु के लिए विवरण दृश्य में, मैं malloc
और free
घटनाओं को देख सकते हैं और, के बाद से मैं पर "रिकार्ड संदर्भ मायने रखता है" कर दिया, मैं भी देख सकते हैं retain
, release
, और autorelease
संदेश और ऑब्जेक्ट की बनाए रखने की गिनती पर उनके प्रभाव।मैं उन घटनाओं से किसी के लिए कॉल स्टैक को देखने के लिए चाहते हैं, तो मैं खिड़की के दाईं ओर बढ़ाया विस्तार पैनल खोल सकते हैं:
यह एक भयानक पोस्ट है। इंटरैक्टिव छवियों के लिए +1। इन स्क्रीनशॉट बनाने के लिए आपने किस ऐप का उपयोग किया था? – gyurisc
मैंने स्क्रीन रिकॉर्ड करने के लिए स्क्रीनफ्लो का उपयोग किया और प्रत्येक वीडियो की लंबाई और आकार को संपादित किया। तब मैंने प्रत्येक वीडियो को एनिमेटेड जीआईएफ में बदलने के लिए फ़ोटोशॉप का उपयोग किया। –
@robmayoff fabulas नौकरी, आपके जैसे लोग आईओएस समुदाय को अधिक से अधिक सीखने में मदद कर रहे हैं। – Alok