سؤال

خلفية:

أحاول مهمة "Hellopoly" في دورة CS193P. لقد قمت بإنشاء ملف .xib الخاص بي، وفئة وحدة تحكم مخصصة.

لم أحصل على أي طرق - سمحت بسحب IB بكتابة ملفات الفصل في Xcode.

مشكلة:

كل مرة قمت بتشغيل التطبيق، قصفت. عندما أقوم بتشغيل GDB، أرى أنه خطأ exc_bad_Access. هذا يعني أنني في الوصول إلى شيء غير موجود في ذاكرة اليمين؟ الشيء هو، كل ما لدي هو الملفات الافتراضية التي تم إنشاؤها بواسطة IB والي الرئيسية. لا شيء آخر.

لقد راجعت حلول الكود المنشورة لمعرفة ما هو مختلف وأنا لست متأكدا مما يجب تجربته بعد ذلك. ما الذي عادة ما تحقق يا رفاق عند تعطل تطبيقك في كل مرة عند بدء التشغيل؟

تكشف تتبع المكدس أنه يحدث في MAIN.M عند إنشاء UIAPPlicationMain - وهذا يعني أنني لم أقسمها أبدا إلى مندوبي طلبي.

إليك التتبع:

Program received signal:  “EXC_BAD_ACCESS”.
(gdb) where
#0  0x01b70d45 in CFHash ()
#1  0x01b741cf in __CFDictionaryFindBuckets1b ()
#2  0x01b72b0a in CFDictionaryGetValue ()
#3  0x00450535 in -[UIProxyObject initWithCoder:] ()
#4  0x0133886e in UINibDecoderDecodeObjectForValue ()
#5  0x013398c2 in -[UINibDecoder decodeObjectForKey:] ()
#6  0x00450b35 in -[UIRuntimeConnection initWithCoder:] ()
#7  0x0045101c in -[UIRuntimeEventConnection initWithCoder:] ()
#8  0x0133886e in UINibDecoderDecodeObjectForValue ()
#9  0x0133820a in UINibDecoderDecodeObjectForValue ()
#10 0x013398c2 in -[UINibDecoder decodeObjectForKey:] ()
#11 0x0044feab in -[UINib instantiateWithOptions:owner:loadingResourcesFromBundle:] ()
#12 0x00451fcb in -[NSBundle(NSBundleAdditions) loadNibNamed:owner:options:] ()
#13 0x002910a6 in -[UIApplication _loadMainNibFile] ()
#14 0x0029a82a in -[UIApplication _runWithURL:sourceBundleID:] ()
#15 0x00297b88 in -[UIApplication handleEvent:withNewEvent:] ()
#16 0x002936d3 in -[UIApplication sendEvent:] ()
#17 0x0029a0b5 in _UIApplicationHandleEvent ()
#18 0x0239eef1 in PurpleEventCallback ()
#19 0x01bb2b80 in CFRunLoopRunSpecific ()
#20 0x01bb1c48 in CFRunLoopRunInMode ()
#21 0x00291e69 in -[UIApplication _run] ()
#22 0x0029b003 in UIApplicationMain ()
#23 0x000026a8 in main (argc=1, argv=0xbffff000) at main.m:14

لم أر هذه المشكلة بالذات في مؤشرات الترابط الأخرى، لكن من فضلك، أرجو أن تدفعني إذا فاتنيها.

الأفكار؟

شكرًا.

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

المحلول

إنه يتعطل في Nibdecoder، أي عند تحميل ملفات XIB الخاصة بك. ربما لديك مرجع موجود هناك إلى كائن أو خاصية غير موجودة أو لم تتم تهيئتها.

نصائح أخرى

تحقق من اسم ملف .xib واسم طريقة initbynibname، إذا كانت هي نفسها. ربما، هذين الأسماين مختلفة.

لقد حلت هذا فقط من أجل تطبيق iPhone الأساسي بالمثل في كتاب تعليمي بنفسك، وأدركت أنني ببساطة في غير محلها في غير محله @ بعد A 'بدلا من الواجهة - مواء هو الذي افسدت (أدناه) وكان ذلك كافيا لرمي الخطأ:

animalSounds=[[NSArray alloc]initWithObjects: @"Oink","@Rawr",@"Ssss",@"Roof","@Meow",@"Honk",@"Squeak",nil];

لتصحيح التصحيح الذي استخدمته الطريقة الأساسية الفائقة لإعداد نقاط التوقف وإخراج NSLOG، لذلك يمكنني معرفة أي من المتغيرات الأربعة التي كنت أستخدمها.

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