ios معنى - ما هو أداء NSManagedObagedContext'sBlock: يستخدم ل؟




1 Answers

أساليب performBlock: و performBlockAndWait: تستخدم لإرسال الرسائل إلى مثيل NSManagedObjectContext إذا تم تهيئة MOC باستخدام NSPrivateQueueConcurrencyType أو NSMainQueueConcurrencyType . إذا قمت بعمل أي شيء مع أحد أنواع السياقات هذه ، مثل إعداد التخزين المستمر أو حفظ التغييرات ، فإنك تفعل ذلك في كتلة.

performBlock: سيضيف الكتلة إلى قائمة الانتظار performBlock: للتشغيل على مؤشر الترابط الخاص بها. ستعود الكتلة على الفور. قد تستخدم هذا لفترة طويلة تستمر العمليات إلى مخزن النسخ الاحتياطي.

performBlockAndWait: سيتم أيضاً إضافة الكتلة إلى قائمة انتظار النسخ performBlockAndWait: وجدولة تشغيله على مؤشر الترابط الخاص به. ومع ذلك ، فإن الكتلة لن تعود حتى يتم الانتهاء من الحظر. إذا لم تستطع المتابعة حتى تعرف ما إذا كانت العملية ناجحة ، فهذا هو خيارك.

فمثلا:

__block NSError *error = nil;
[context performBlockAndWait:^{
    myManagedData.field = @"Hello";
    [context save:&error];
}];

if (error) {
    // handle the error.
}

لاحظ أنه لأنني فعلت performBlockAndWait: ، يمكنني الوصول إلى الخطأ خارج الكتلة. performBlock: قد يتطلب نهجا مختلفا.

من ملاحظات الإصدار الأساسي لبيانات iOS 5 :

يوفر NSManagedObjectContext الآن دعمًا منظمًا لعمليات متزامنة. عند إنشاء سياق كائن مدار باستخدام initWithConcurrencyType: ، لديك ثلاثة خيارات لارتباط مؤشر الترابط (قائمة الانتظار) الخاص به

  • الحبس (NSConfinementConcurrencyType).

    هذا هو الافتراضي. أنت تعد بأن هذا السياق لن يتم استخدامه من قبل أي موضوع بخلاف الموضوع الذي قمت بإنشائه به. (هذا هو بالضبط نفس متطلبات مؤشر الترابط الذي استخدمته في الإصدارات السابقة.)

  • قائمة انتظار خاصة (NSPrivateQueueConcurrencyType).

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

  • قائمة الانتظار الرئيسية (NSMainQueueConcurrencyType).

    السياق مقترن بقائمة الانتظار الرئيسية ، وعلى هذا النحو مرتبطة بحلقة الحدث الخاصة بالتطبيق ، ولكنها تتشابه مع السياق الخاص بقائمة انتظار خاصة. يمكنك استخدام نوع قائمة الانتظار هذه للسياقات المرتبطة بوحدات التحكم وكائنات واجهة المستخدم المطلوب استخدامها فقط في مؤشر الترابط الرئيسي.

كلمة بالعربية

في دائرة الرقابة الداخلية 5 ، NSManagedObjectContext لديها اثنين من أساليب جديدة ، performBlock: و performBlockAndWait: ما هي هذه الأساليب المستخدمة بالفعل؟ ماذا يحل محلهم في الإصدارات القديمة؟ أي نوع من الكتل يفترض أن يتم تمريرها إليهم؟ كيف أقرر ما يجب استخدامه؟ إذا كان لدى أي شخص بعض الأمثلة على استخدامه ، فسيكون ذلك رائعًا.




Related