আমি কীভাবে এক্সকোড 4 এ এনএসজেম্বিএনেবল সেট আপ করব?


456

আমি কীভাবে সেট আপ করব NSZombieEnabledএবং CFZombieLevelএক্সকোড 4 এ আমার এক্সিকিউটেবলের জন্য?


1
আপনি কি এক্সকোড 4 সম্পর্কে জিজ্ঞাসা করছেন?
যিহিয়াহ

8
ডিফল্টরূপে এই জাতীয় বিকল্পগুলি কেন সক্ষম নয় ...
ড্যানিয়েল ম্যাগনসন

26
কারণ এটি মূলত মেমরির প্রকৃত কোনও মুক্তিকে বাধা দেয়, যা ডিফল্টরূপে সক্ষম করা ভাল ধারণা বলে মনে হয় না।
চেতান

14
@ ড্যানিয়েল ম্যাগনুসন: এটি বেঁচে থাকার যোগ্যতম জিনিস। এক্সকোডের সাথে বন্ধুত্বপূর্ণ কিন্তু কার্যক্ষমতার দ্বারা বিকাশ করে আপনি আরও ভাল ডিভস পান। শুধু মজা করছি.
ড্যান রোজনস্টার্ক

3
@ ড্যানিয়েল ম্যাগনুসন আমার মনে হয় এটি কোনও খারাপ ধারণা নয়, "জ্যাম্বি" মোড প্রতিটি বস্তুকে একটি বিশেষ ধরণের অবজেক্টে পরিবর্তন করবে যাতে এটি সনাক্ত করতে পারে, যখন এটি প্রেরিত বার্তা পেয়ে যায়। সুতরাং "জুম্বো মোড" সক্ষম করার ফলে কোনও বস্তু কখনও ডিলোক্যাট হবে না, সুতরাং এই জাতীয় ত্রুটিগুলি মোকাবেলা করার সময় আপনার কেবল সত্যই এটি ব্যবহার করা উচিত।
বেসি

উত্তর:


753

এক্সকোডে 4.x টিপুন

R

(অথবা ক্লিক Menubar> Product> Scheme> Edit Scheme)

"ডায়াগনস্টিক্স" ট্যাবটি নির্বাচন করুন এবং "জ্যাম্বি অবজেক্টস সক্ষম করুন" ক্লিক করুন:

"জ্যাম্বি অবজেক্টস সক্ষম করুন" ক্লিক করুন

এটি প্রকাশিত বস্তুগুলিকে NSZombie দৃষ্টান্তগুলিতে পরিণত করে যা আবার ব্যবহার করার সময় কনসোল সতর্কতাগুলি মুদ্রণ করে। এটি একটি ডিবাগিং সহায়তা যা মেমরির ব্যবহার বাড়ায় (কোনও বস্তু সত্যিই প্রকাশিত হয় না) তবে ত্রুটি প্রতিবেদনকে উন্নত করে।

একটি সাধারণ কেসটি হ'ল আপনি যখন কোনও বস্তুকে অতিরিক্ত ছাড়েন এবং আপনি জানেন না যে কোনটি:

  • জম্বিগুলির সাথে: -[UITableView release]: message sent to deallocated instance
  • জম্বিবিহীন: EXC_BAD_ACCESS

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

টিপলে Rপণ্য> চালু করুন নির্বাচন যখন পালন হিসাবে একই Altকি টেপা।
"জুম্বো অবজেক্টস সক্ষম করুন" চেকবাক্সটি ক্লিক করা ট্যাব আর্গুমেন্টগুলির "পরিবেশ পরিবর্তনশীল" বিভাগে ম্যানুয়ালি "NSZombieEnabled = YES" যোগ করার সমান।


27
ধন্যবাদ - আমি ভাবছিলাম যে তারা এই বিকল্পগুলি কোথায় লুকিয়ে রেখেছিল I আমি এখন বুঝতে পারি যে এটি 'সম্পাদনা প্রকল্প' মেনুতে একই উইন্ডো।
এপ্রি

1
এটি যুক্ত করার জন্য, "রান" স্ক্রিনে এটি করা "টেস্ট" এর জন্য সেট করে এবং যদি "রান অ্যাকশনগুলির বিকল্পগুলি ব্যবহার করুন" বাক্সটি পরীক্ষা করা হয় তবে। আপনি যদি কেবল টেস্টের জন্য এটি করতে চান, সেই বাক্সটি চেক করা উচিত
ক্যামেরন

1
দয়া করে নোট করুন যে এই বিকল্পটি এক্সকোড ৪.১ (ডান?)
phi

2
এক্সকোড 5 এ (এবং 4 এর পরে সংস্করণগুলি - 4.3.x নিশ্চিতরূপে, সম্ভবত আগে), এটি CMD-<( CMD-SHIFT-comma), বাProduct -> Scheme -> Edit SCheme...
অলি

1
আমি অদ্ভুত EXC_BAD_ACCESS সংখ্যায় আটকে আছি, এমনকি বোকচন্দর এড়ানো হয়, তাই চমৎকার হবে যদি এই আমাকে নির্দেশ পারে stackoverflow.com/questions/29210057/...
অনুপ বৈদ্য

70

জ্যানোর উত্তরটি এটির সন্ধান করার সহজতম উপায় .. অন্য উপায়টি হ'ল যদি আপনি স্কিমের ড্রপ ডাউন বার -> সম্পাদনা প্রকল্প -> আর্গুমেন্ট ট্যাবে ক্লিক করেন এবং তারপরে পরিবেশ পরিবর্তনশীল কলামে NSZombieEn اهل এবং মান কলামে YES যুক্ত করেন ...


57

আমি এই বিকল্পটি আরও সুবিধাজনক বলে মনে করি:

  1. "রান বোতাম ড্রপডাউন" ক্লিক করুন
  2. তালিকা থেকে চয়ন করুন Profile
  3. প্রোগ্রামটি "ইনস্ট্রুমেন্টস" খুলতে হবে যেখানে আপনিও চয়ন করতে পারেন Zombies
  4. এখন আপনি আপনার অ্যাপ্লিকেশনটির সাথে যোগাযোগ করতে পারেন এবং ত্রুটির কারণ ঘটানোর চেষ্টা করতে পারেন
  5. ত্রুটি হওয়ার সাথে সাথেই আপনার অজানা কখন প্রকাশ করা উচিত এবং সেইজন্য deallocated হওয়া উচিত।

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]

এক্সকোড স্কিমগুলির ডায়াগনস্টিক ট্যাব ব্যবহারের তুলনায় সুবিধাগুলি :

  1. আপনি যদি ডায়াগনস্টিক ট্যাবে বিকল্পটি চেক করতে ভুলে যান তবে কোনও জিনিসই মেমরি থেকে মুক্তি পাবে না।

  2. আপনি একটি আরও বিশদ স্ট্যাক পাবেন যা আপনাকে দেখায় যে কীভাবে আপনার দূষিত বস্তুটি বরাদ্দ / মুক্তি বা রক্ষণাবেক্ষণ করা হয়েছিল methods


1
আমার এক্সকোড 4 এ "জম্বি" বিকল্পটি অনুপস্থিত, কেন?
লি ফিউমিন

4
নিশ্চিত করুন যে আপনি iOS Simulator > Allপ্রধান টেম্পলেট তালিকাটি থেকে বেছে নিচ্ছেন (আপনি কেবল সিমুলেটরটিতে এটি করতে পারেন)
বেসি

কোন কারণে .. যদি আমি 'জম্বি' নির্বাচন করি তবে এটি কেবল বরাদ্দ দেখায় .. কোনও ধারণা কেন?
অ্যাবড

এটিই সেরা সমাধান। আমাকে অনেক সাহায্য করেছে :)
মাইচা মিস্জিজিজিন

5

এক্সকোডে 4.2

  • প্রকল্পের নাম / সম্পাদনা প্রকল্প / ডায়াগনস্টিকস /
  • বোকচন্দর বস্তুগুলির চেক বাক্স সক্ষম করুন
  • তুমি করেছ

5

এক্সকোডে 7 এ

<

অথবা > মেনু Edit Schemeথেকে নির্বাচন করুনProductScheme

ট্যাব Enable Zombie Objectsফর্ম নির্বাচন করুনDiagnostics

এক্সকোড 7 জম্বি পতাকা

বিকল্প হিসাবে, আপনি যদি .xcconfigফাইলগুলি পছন্দ করেন তবে আপনি এই নিবন্ধটি https://therealbnut.wordpress.com/2012/01/01/setting-xcode-4-0- পরিবেশ - পরিবর্তনশীল- from- a- script/ পড়তে পারেন


1

কোকো একটি দুর্দান্ত বৈশিষ্ট্য সরবরাহ করে যা এই ধরনের পরিস্থিতিতে ডিবাগ করার জন্য আপনার ক্ষমতাগুলিকে ব্যাপকভাবে বাড়িয়ে তোলে। এটি এনভায়রনমেন্ট ভেরিয়েবল, যাকে এনএসজম্বিএনেবলড বলা হয়, এই ভিডিওটি দেখুন যা এনএসজম্বিএনেবেলডকে সিটিজেক্ট-সি-তে সেটআপ করার ব্যাখ্যা দেয় watch


-1

এক্সকোডে> 4.3:

আপনি স্কিমের ড্রপ ডাউন বার -> স্কিম সম্পাদনা -> আর্গুমেন্ট ট্যাবে ক্লিক করুন এবং তারপরে এনভোমোম্বইএনবেবলটি ভেরিয়েবল কলামে এবং মান কলামে YES যুক্ত করুন।

শুভকামনা !!!

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