سؤال

كيفية استخدام كيفية استخدام NSRunloop في الهدف - C وانتظر بعض المتغير لتغيير القيمة؟

شكرًا

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

المحلول

لن نستخدم عادة NSRunloop في الإنتاج لانتظار تغيير متغير. يمكن للمرء استخدام رد الاتصال.

ومع ذلك، في رمز اختبار الوحدة لدينا ما يلي:

NSDate *twoSecondsFromNow = [NSDate dateWithTimeIntervalSinceNow:2.0];
    while (!callBackInvoked && !errorHasOccured && runCount-- &&  [[NSRunLoop currentRunLoop]  runMode:NSDefaultRunLoopMode beforeDate:twoSecondsFromNow]) {
        twoSecondsFromNow = [NSDate dateWithTimeIntervalSinceNow:2.0];
    }

ينتظر التعليمات البرمجية حتى يتم استدعاء اتصالنا أو حدث خطأ أو عدد 2 الفترتين الثانية التي انتظرناها قد حدث. نحن نستخدم هذا لاختبار المندوبين الذين يصنعون الاسترجاعات.

كما قلت لن أفعل ذلك في قانون الإنتاج.

نصائح أخرى

لن تستخدم عموما NSRunLoop مباشرة في التعليمات البرمجية الخاصة بك.

سوف تنشئ GUI التطبيق الذي لديه بالفعل NSRunLoop فيه (استخدم قوالب رمز التطبيق المحدد مسبقا Xcode).

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

  • إذا كان الزر، فسوف تقوم بإعداد معالجات لاستدعاء الإجراءات.
  • إذا كان متغيرا، فستقوم بإعداد KVC / KVO للكشف عن التغيير ومعالج الاتصال.

وهلم جرا، Cocoa سوف تتعامل مع رمز الغراء لك، تحتاج فقط إلى إعداد المناولة المناسبة لأداء الإجراء.

لا توجد تفاصيل كافية في سؤالك، أود أن أقترح إلقاء نظرة على بعض الأساس البرنامج التعليمي في موقع Apple للمطورين لمعرفة ما هو متاح في الكاكاو.

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