এনএসজম্বি কী?


97

আমি ডিবাগ NSZombieEnabledকরার trueসময় সেট করার জন্য পরামর্শগুলি দেখেছি । এনএসজম্বি কী? এটা কি কাঠামো? একটা ব্যবস্থাপনা?


18
একটি অনাদৃত এনএসওজেক্ট - সাবধান!
ভাইকিংগুন্ডো

4
একটি * Undead NSObject।
অ্যালেক্স জাভাটোন

উত্তর:


195

এটি একটি স্মৃতি ডিবাগিং এইড। বিশেষত, যখন আপনি সেট করেন NSZombieEnabledতখনই যখন কোনও বস্তু পৌঁছে যায় তখন 0 টি গণনা বজায় রাখার পরিবর্তে এটি একটি NSZombieদৃষ্টান্তে রূপান্তরিত হয় । এই ধরণের জম্বি যখনই কোনও বার্তা পায়, এটি ক্র্যাশ হওয়া বা অনাকাঙ্ক্ষিত উপায়ে আচরণ করার পরিবর্তে একটি সতর্কতা লগ করে। এই হিসাবে, আপনি খড়খড়ি অনুসন্ধানগুলিতে উন্নত সরঞ্জামগুলি বা পেইনস্টেকিং সুই ছাড়াই সূক্ষ্ম ওভার-রিলিজ / অটোরিলিজ সমস্যাগুলি ডিবাগ করতে পারেন।

নামটি এই সত্যটির একটি মোটামুটি স্পষ্ট নাটক যে বস্তুগুলি সাধারণত "মৃত" হিসাবে বিবেচিত হয় যখন তারা 0 টি গণনা বজায় রাখে this অনেকগুলি সত্যই জম্বিগুলির মতো, বাদে তারা কম মস্তিষ্ক খায়।


61
আপনার ডিবাগিং শেষ হয়ে গেলে এই সেটিংটি সরাতে সাবধান হন কারণ এটি প্রতিটি বস্তুটি মূলত ফাঁস করে।
জাস্টিন

4
এই সহজ ব্যাখ্যা জন্য ধন্যবাদ। জানিয়ে দিন যে কোকো দেব লিঙ্কটি আর কাজ করছে না। সংক্ষেপে এবং বিন্দুতে +1
সিআরডেভ

95

অ্যাডাম জম্বিগুলি কী তা ব্যাখ্যা করার জন্য দুর্দান্ত কাজ করেছিলেন তবে পরিবেশের পরিবর্তনশীল ব্যবহার করা এগুলি সন্ধান এবং ট্র্যাক করার সর্বোত্তম উপায় নয়।

জম্বি শনাক্তকরণের জন্য আরও ভাল পন্থা, কেবলমাত্র যন্ত্রগুলি ব্যবহার করা - এক্সকোড থেকে "রান উইথ ইনস্ট্রুমেন্ট" দিয়ে শুরু করুন এবং "বরাদ্দ" চয়ন করুন।

তারপরে রেকর্ডিংটি শুরু হওয়ার ঠিক পরে বন্ধ করুন, বরাদ্দ উপকরণে "i" বোতাম টিপুন এবং "রেফারেন্স গণনা সক্ষম করুন" এবং "এনএসজেম্বি সনাক্তকরণ সক্ষম করুন" চালু করুন। এখন যন্ত্রটিতে আবার রেকর্ডটি হিট করুন, এবং আপনার অ্যাপ্লিকেশনটি শুরু হবে - যদি কোনও জম্বি অবজেক্ট পাঠানো হয় তবে বার্তাগুলি রেকর্ডিং বন্ধ হয়ে যায়, এবং একটি ডায়ালগ বক্স রেকর্ডিংয়ের সময়রেখায় পপ আপ হয়ে যায় - আপনি যে জায়গাতে কোনও বস্তু ছিল তা খুঁজে পেতে সেখানে ক্লিক করতে পারেন ধরে রাখা বা মুক্তি

সম্পাদনা করুন: পূর্ববর্তী পরামর্শটি এক্সকোড 3 এর জন্য ছিল, এখানে এক্সকোড 4 এর জন্য একটি সংযোজন:

এক্সকোডে 4.2 , বোকচন্দর সনাক্তকরণ - জোম্বো ইনস্ট্রুমেন্ট ব্যবহারের আরও সহজ ব্যবস্থা রয়েছে। অ্যাপ্লিকেশনটি শুরু করতে "রান" এর পরিবর্তে, "প্রোফাইল" ব্যবহার করুন এবং একটি সরঞ্জাম নির্বাচক উপস্থিত হবে। "বোকচন্দর" নির্বাচন করুন, এবং অ্যাপটি চলতে শুরু করবে - আপনার ক্রাশের কারণ হিসাবে যা কিছু করুন, একটি ডায়ালগ "জম্বি ম্যাসেজড" বলে পপ আপ করবে।

সেখান থেকে, ডায়লগ বাক্সের ছোট তীরটি ক্লিক করুন। এটি যে সমস্ত সময় জম্বি অবজেক্ট তৈরি হয়েছিল, ধরে রেখেছে বা মুক্তি পেয়েছিল তার একটি তালিকায় নিয়ে যাবে। পাশের বারটি উপরে টানুন এবং আপনি কোডটিতে স্ট্যাক ট্রেসের দিকে তাকিয়ে প্রতিটি এন্ট্রিতে যেতে পারেন যা ধরে রাখা গণনার প্রতিটি সমন্বয়ের জন্য দায়ী ছিল।


4
এটি অবিশ্বাস্যভাবে দরকারী পরামর্শ।
w.donahue

4
আমি এক্সকোড 4 এর জন্য উত্তরটি আপডেট করেছি যেহেতু এটি ইনস্ট্রুমেন্টগুলিতে বোকচন্দর সনাক্তকরণকে আরও সহজ করে তোলে।
কেন্ডাল হেলস্টেটার জেলনার

আসলেই নয়,
এক্সকোড

4
আমি এটিও নিশ্চিত করতে পারি যে এক্সকোড 7.2
বীট করুন

31

আমি কেন্ডাল যা যুক্ত করেছে তার সাথে একমত, এটি খুব দরকারী, তবে আমি এখনও পরিবেশ পরিবর্তনশীল করার পরামর্শ দিচ্ছি যাতে আপনি ভুলে যাবেন না যে তারা সক্ষম হয়েছেন। কোকো দেব-এ (এখন মেয়াদোত্তীর্ণ) লিঙ্কের অনুরূপ, আমি এটি রেখেছি যাতে আমি এটি মিস করি না:

if(getenv("NSZombieEnabled") || getenv("NSAutoreleaseFreedObjectCheckEnabled")) {
    NSLog(@"ZOMBIES/AFOC ARE ENABLED!!! AAAAARRRRRRGH!!! BRAINS!!!");
} 

এটি খুব মনোযোগ দিয়ে আমার দৃষ্টি আকর্ষণ করে।


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.