سؤال

لدي تطبيق بسيط يعتمد على منتصف الليل ثم يلعب صوت تصوير مرارا وتكرارا وأوميض العلامة التي تظهر الوقت. لذلك يستخدم Blinking الملصق NSTIMER، في حين أن التصفير يذهب في مؤشر ترابطه الخاص، بحيث يمكن أن تستخدم وظيفة C (لاستدقاء نظام إكمال معرف النظام) [NSTHREAD SleepFortimeTerval: ...]؛ الانتظار قليلا بين لعب صوت التنبيه صوت. لذلك أحصل على رسالتين خطأ أثناء التنفيذ قائلا إنه لا يوجد تجمع Autorelease وسوف تسرب فقط. إنه لأنه في الطريقة التي أسميها في مؤشر ترابط جديد، هناك اثنين من الأوتار "يتم استخدامها لإنشاء معرف صوت النظام (اسم الملف والملحق). هل هناك طريقة لا أستطيع استخدام تجمع Autorelease لأن تلك هي الأشياء الوحيدة التي تحاول استخدامها على الإطلاق. شكرًا.

أو يجب أن أستخدم اثنين من nstimers بدلا من موضوع آخر ..؟

ومع ذلك، فقد قررت إجابة بن جوتليب، ومع ذلك فقد قررت استخدام NSTIMER أخرى بدلا من ذلك لأنني نسيت كيف لم تتم مزامنتها حقا إلى الوقت الذي تنام فيه الخيط باعتباره التنفيذ الفعلي للرمز قبل أن يستغرق وقتا طويلا. وهذا يجعل الأمور متناظرة؛).

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

المحلول

ما عليك سوى إنشاء تجمع Autorelease بطريقة مؤشر ترابطك:

NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

... موضوع الجسم ...

[pool release];

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