سؤال

لديّ إجراء يبدأ عندما يقوم المستخدم بنقر فوق زر على الشاشة (على سبيل المثال "استيراد"). في الوقت نفسه ، يظهر uitoolbar في أسفل الشاشة مما يمنح المستخدم خيار إلغاء هذا الإجراء. كيف يمكنني إرسال رسالة إلغاء بشكل صحيح إلى الوظيفة الأولية؟ إذا ضرب المستخدم "إلغاء" ، فأنا لا أريد أن يستمر "الاستيراد". من الناحية النظرية ، يمكنني إعداده كخيط منفصل (يمكن أن أقتله بعد ذلك) ، لكنني لست متأكدًا من الطريقة الصحيحة للقيام بذلك حتى يتمكن من التنظيف بعد نفسه. ما هي بعض الاستراتيجيات الأخرى التي يمكن أن تكون قادرة على "قتل" وظيفة بدأها المستخدم بالفعل؟

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

المحلول

قم بإنشاء عملية منفصلة باستخدام شيء مثل:

NSOperationQueue* queue = [[[NSOperationQueue alloc] init] autorelease];
[queue addOperation: [[[NSInvocationOperation alloc] initWithTarget: self 
      selector: @selector(_backgroundWorker) 
      object: nil] autorelease]];

وبهذه الطريقة ، سيتم تنفيذ _backgroundworker دون إيقاف موضوع واجهة المستخدم الرئيسية.

يتم الضغط على زر إلغاء واحد ، وتعيين بعض المتغير الداخلي وتحقق من قيمته داخل _backgroundworker.

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