عند استخدام Autorelease ، متى يتم إصداره بالفعل؟
-
27-09-2019 - |
سؤال
في بعض الأحيان أتساءل متى يتم توضيح شيء ما. أضفت nslog في صفقة الكائنات المختلفة ، لكنني لم أجد أي شيء مفيد.
متى يتم إطلاق شيء ما عند استخدام Autorelease؟ هل لا يمكن التنبؤ به ، أم أن هناك بعض الخيوط الإضافية التي تعمل؟ شكرًا.
المحلول
عندما تنتهي "تجمع Autorelease".
ما يعنيه هذا عادة ، هو عندما يكون المكدس غير ملزم.
لذا فكر في الأمر بهذه الطريقة - تطبيقك مدفوع. يمكنك الحصول على الأحداث التي يتم إرسالها إليها - ويتم معالجتها من خلال سلسلة من الوظائف. عندما تعود كل وظيفة ، ويتم معالجة الحدث ، سيتم استدعاء Autorelease.
هذا يعني أنه يمكنك الاعتماد على كائن لا يزال على قيد الحياة عندما تقوم بتوقيته ، وإعادته من وظيفة إلى المتصل. لا تتوقع أبدًا أن تكون موجودة عند معالجة أي نوع من الأحداث اللاحقة ، أو عند استدعاء إطار المكدس الموجود خارجك.
نصائح أخرى
يحتفظ كل مؤشر ترابط في تطبيق الكاكاو بمجموعة من كائنات NSAUTORELEASEPOOL. عندما ينتهي مؤشر ترابط ، فإنه يطلق تلقائيًا جميع تجمعات الإحساس التلقائي المرتبطة بنفسها.