سؤال

كيف أقوم بإعداد NSZombieEnabled و CFZombieLevel لبلدي القابل للتنفيذ في Xcode 4؟

هل كانت مفيدة؟

المحلول

في Xcode 4.x اضغط

ص

(أو انقر Menubar > Product > Scheme > Edit Scheme)

حدد علامة التبويب "التشخيص" وانقر فوق "تمكين كائنات الزومبي":

Click "Enable Zombie Objects"

هذا يحول الكائنات التي تم إصدارها إلى مثيلات nszombie التي تطبع تحذيرات وحدة التحكم عند استخدامها مرة أخرى. هذه مساعدة تصحيح الأخطاء تزيد من استخدام الذاكرة (لا يتم إصدار أي كائن بالفعل) ولكنه يحسن الإبلاغ عن الخطأ.

الحالة النموذجية هي عندما تفرط في إصدار كائن ولا تعرف أي منها:

  • مع الزومبي: -[UITableView release]: message sent to deallocated instance
  • بدون زومبي: EXC_BAD_ACCESS

يتم تجاهل إعداد Xcode هذا عند أرشفة تطبيق App Store Sridmission. لا تحتاج إلى لمس أي شيء قبل إصدار طلبك.

الضغط ص هو نفسه اختيار المنتج> تشغيل مع الحفاظ على البديل مفتاح مضغوط.
إن النقر فوق مربع الاختيار "تمكين كائنات Zombie" هو نفسه إضافة "nszombieenabled = yes" يدويًا في "متغيرات البيئة" في وسيطات علامة التبويب.

نصائح أخرى

إجابة Jano هي أسهل طريقة للعثور عليها .. طريقة أخرى ستكون إذا قمت بالنقر فوق شريط Scheme Drop -Drop -> تحرير Scheme -> وسيطات الطرز ثم إضافة nszombieenabled في عمود متغيرات البيئة ونعم في عمود القيمة ...

أجد هذا البديل أكثر ملاءمة:

  1. انقر فوق "زر التشغيل المنسدلة"
  2. من القائمة اختر Profile
  3. يجب أن يفتح البرنامج "الأدوات" حيث يمكنك أيضًا الاختيار Zombies
  4. يمكنك الآن التفاعل مع تطبيقك ومحاولة التسبب في الخطأ
  5. بمجرد حدوث الخطأ ، يجب أن تحصل على تلميح عند إصدار كائنك وبالتالي تعامله.

Zombies

بمجرد اكتشاف الزومبي ، تحصل على "مكدس Zombie" أنيق يوضح لك عندما تم تخصيص الكائن المعني وأين تم الاحتفاظ به أو إطلاقه:

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:

  1. إذا نسيت إلغاء تحديد الخيار في علامة التبويب التشخيص ، فلن يتم إصدار كائنات من الذاكرة.

  2. يمكنك الحصول على مكدس أكثر تفصيلاً يوضح لك الطرق التي تم تخصيصها / إطلاقها أو الاحتفاظ بها.

في Xcode 4.2

  • اسم المشروع/تحرير المخطط/التشخيص/
  • تمكين خانة الاختيار تمكين كائنات الزومبي
  • انت انتهيت

على XCODE 7

<

أو حدد Edit Scheme من عند Product > Scheme قائمة

تحديد Enable Zombie Objects تشكيل Diagnostics التبويب

xcode 7 zombie flag

كبديل ، إذا كنت تفضل .xcconfig الملفات يمكنك قراءة هذه المقالة https://therealbnut.wordpress.com/2012/01/01/setting-xcode-4-0-environment-variables-from-a-script/

يوفر Cocoa ميزة رائعة تعزز قدراتك بشكل كبير لتصحيح مثل هذه الحالات. إنه متغير بيئة يسمى nszombieenabled ، شاهد هذا فيديو وهذا ما يفسر إعداد nszombieenabled في Objective-C

في Xcode> 4.3:

يمكنك النقر فوق شريط Scheme Drop Drop -> تحرير علامة التبويب -> وسيطات الطرز ثم إضافة nszombieenabled في عمود متغيرات البيئة ونعم في عمود القيمة.

حظا طيبا وفقك الله !!!

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top