كيف يمكنني معرفة تطبيق Cocoa الخاص بي للإقلاع عنها من داخل التطبيق نفسه؟

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

  •  11-09-2019
  •  | 
  •  

سؤال

أبحث عن طريقة جيدة لإخبار تطبيق Cocoa الخاص بي لإنهاء نفسه. تطمئن إلى أن هذا لن يستخدم لرمز الإنتاج. أنا فقط أبحث عن طريقة سهلة لتشغيل اختبار واحد ثم أغلق التطبيق أثناء التصحيح.

لقد وجدت ذلك exit(0); سيقوم بإغلاق التطبيق، لكنه يتجاوز كل إجراءات خروج التطبيق العادي، وأود أن أبقي كل منهم في مكانها.

في الأساس، أريد أن تعمل أشياء كما لو أن المستخدم سحبت "إنهاء" من القائمة، لكنني أريد أن يحدث ذلك تلقائيا بعد الانتهاء من الاختبار الخاص بي.

يبدو وكأنك حاليا مثل هذا:

#if (SUPERFANCY_TESTING_MODE)
    [self doSomething];
    exit(0); // <-- I need something better to go here
#endif
هل كانت مفيدة؟

المحلول

يمكنك أن تطمئن إلى حد كبير أن التطبيق الخاص بك سوف يقتل على الأقل بعض الوقت. وهكذا، الدفاع ضد الخروج من شابه exit(0); يكون مطلوب.

ومع ذلك، nsapplication تنفذ -terminate: طريقة.

[NSApp terminate: nil]; يجب أن تفعل ما تريد.

أود أن أقترح عموما نشرها عبر -performSelector:afterDelay: مع تأخير 0.0 لإجباره على حدوثه في الجزء العلوي من المرور التالي من خلال حلقة الحدث.

مثال:

[NSApp performSelector:@selector(terminate:) withObject:nil afterDelay:0.0];
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top