nsapplicationwillterminatification لم يتم استلامها
-
16-09-2019 - |
سؤال
لدي بعض التعليمات البرمجية التي يجب تشغيلها عند إنهاء التطبيق. قمت بتسجيل جهاز التحكم الخاص بي للحصول على NSapplicationWillterMinatification كما يلي:
[[NSNotificationCenter defaultCenter]
addObserver: self
selector: @selector(applicationWillTerminate:)
name: NSApplicationWillTerminateNotification
object: nil];
الآن، إذا قمت ببدء تشغيل تطبيقي وإنهاءه خلال أول 20 ثانية أو نحو ذلك، applicationWillTerminate
يحصل دعا. إذا قمت بإنهاء التطبيق لاحقا، فهذا لا. ما في طلبي قد يسبب هذا السلوك؟ لقد حاولت أيضا إعداد جهاز التحكم الخاص بي كمفوض NSApplication بنفس النتائج. أيه أفكار؟
شكرا.
أوه، وهذا هو Xcode 3.2، سنو ليوبارد 10.6.1، باستخدام 10.5 SDK. يحدث في كل من التصحيح والإفراج يبني.
المحلول
هناك عدة أسباب لماذا قد يحدث هذا.
إذا كنت تقوم بتشغيل GC'D، فهل يتم جمع مراقبك ووضع اللمسات الأخيرة قبل انتهاء الإنهاء؟ (يجب أن اختبر هذا وملف الأخطاء إذا فعل ذلك كما يجب توثيقه على الأقل)
هل تطبيقك تحطمها بصمت أو استدعاء الخروج () مباشرة؟
بشكل عام، لا يمكنك الاعتماد على إشعار الإنهاء الذي يتم استلامه حيث قد يذهب المستخدم للقوة إنهاء من هيك منه.
أيضا، في Snow Leopard، هناك ميزة تسمى الإنهاء المفاجئ الذي يسمح لتطبيقك بالسماح للنظام بمعرفة أنه من الآمن لقتل التطبيق بدلا من الذهاب من خلال الإنهاء العادي Rigamarole. هو موثقة في nsprocessinfo. توثيق.