كيف يمكنني إيقاف تطبيقي مؤقتا حتى يتم تقديم تقرير تحطم؟

StackOverflow https://stackoverflow.com/questions/1832795

سؤال

خلفية

  • أنا أستخدم UKCrashreporter في تطبيقي.

  • لقد قمت بتثبيت معالج الاستثناء الخاص بي.

  • أنا أقوم بإعداد managedobjectcontext من كائن ActiveItEmcontroller في ApplicationDidfinishLaunching (1)

المشكلة

إذا كانت طريقة ManagedObjectContext ترمي استثناء، فإن مربع الحوار Risk Reporter يعمل فقط قبل تعطل التطبيق، وبالتالي لا يحصل المستخدم أبدا على الإبلاغ عن التعطل.

أريد أن يستمر تطبيقي فقط بعد تم الإبلاغ عن التعطل، وليس في حين أن النافذة تظهر.

ما حاولت

  • إذا كانت UkcrashreporationCheckforcrachcrash () طريقة مهدئة ج، أفترض أنني يمكن أن أتصل بأداء الأداء: WaitUntildone: نعم لكنه ليس كذلك.

  • لقد نظرت إلى بعض الأسئلة المتفوقة على المكدس الأخرى باستخدام الأقفال الشرطية لتناول التطبيقات مؤقتا، لكنني لا أستطيع أن أفهم كيف أستخدمها لوظيفة C.

كيف أذهب للقيام بذلك بطريقة لطيفة؟ هل لدى الناس أي نصيحة بالنسبة لي؟ أي ردود سيكون موضع تقدير كبير.

الرمز

// In app delegate

-(void)applicationWillFinishLaunching:(NSNotification *)aNotification {
        UKCrashReporterCheckForCrash();   // A C function which then creates a window if
                                          // it detects a crash has happened.
}

-(void)applicationDidFinishLaunching:(NSNotification *)aNotification {
    [activeItemController setMoContextDisk:[self managedObjectContext]];
    [activeItemController setMoContextMemory:[self managedObjectContextMemory]];
}

تحديث 1.

لقد طلب من التفاصيل حول ما أحاول القيام به، لذلك يذهب هنا.

الخطأ الذي أثار هذا التفكير كان استثناء عند دمج ManagedBjectsModels. تم القبض على تطبيقي في طباعة حلقة "استثناء غير مدفوع" لوحدة التحكم في كل بضع مللي ثانية.

وعندما قمت بتثبيت معالج الاستثناء غير المزعج قبل أن يحدث هذا الاستثناء، سأحصل على السلوك الموصوف - سيؤدي تطبيقي، وعرض مربع حوار تقرير التعطل لفترة وجيزة، ثم استمر في التحميل والتحطم مرة أخرى.

ملخص - أريد أن أكون قادرا على التعامل مع الأخطاء التي تحدث عند بدء التشغيل.

(1) أنا لا أستخدم الارتباطات للقيام بذلك، حيث اعتقدت أن الروابط ستجعل اختبار الفصل أكثر إشكالية.

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

المحلول

أعتقد أن مشكلتك هي مع التفكير في ذلك "مؤقتا" تطبيقك. فكر في الأمر أكثر كحالة UI الأولي المختلفة. ستجول محاولاتك لمنع حلقة التشغيل أي نافذة تفاعلية من ... حسنا، كونها تفاعلية. :-)

أفضل رهان هو إظهار نظام التشغيل المستخدم الرئيسي الخاص بك (وتوصيل مصادر البيانات، وما إلى ذلك) فقط إذا كان "AM مطالبة المستخدم بتقديم تقرير تحطم"، تقول طريقة "لا، المضي قدما وتبدأ بشكل طبيعي". خلاف ذلك، إظهار نافذتك، وعند إرسال المستخدم أو يرسله لإرسال التقرير، أغلق النافذة واطلب وحدة تحكم التطبيق الخاصة بك لمتابعة بدء التشغيل العادي.

نظرت إلى UkcrashreporateChecfforcrash () ولا يبدو أنها تخلق نافذة من أي نوع. انها فقط تقدم الحادث. هل يمكن أن تصف ما تفعله بمزيد من التفاصيل؟

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