سؤال

في بعض الأحيان أتساءل متى يتم توضيح شيء ما. أضفت nslog في صفقة الكائنات المختلفة ، لكنني لم أجد أي شيء مفيد.

متى يتم إطلاق شيء ما عند استخدام Autorelease؟ هل لا يمكن التنبؤ به ، أم أن هناك بعض الخيوط الإضافية التي تعمل؟ شكرًا.

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

المحلول

عندما تنتهي "تجمع Autorelease".

ما يعنيه هذا عادة ، هو عندما يكون المكدس غير ملزم.

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

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

نصائح أخرى

من وثائق iOS

يحتفظ كل مؤشر ترابط في تطبيق الكاكاو بمجموعة من كائنات NSAUTORELEASEPOOL. عندما ينتهي مؤشر ترابط ، فإنه يطلق تلقائيًا جميع تجمعات الإحساس التلقائي المرتبطة بنفسها.

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