سؤال

و(فقط لكي تعرف أنا أتعلم لتطوير لفون، دون interfacae باني)

وأنا الترميز بلدي أول تطبيق عرض متعددة، والتي لديها viewcontroller الجذرية واثنين من viewcontrollers البعض، ويستخدم viewcontroller الجذر تحميل كسول، وذلك عندما viewDidLoad، فإنه يخلق viewcontroller الأول ويضيف وجهة نظرها إلى subview، ولكن لا يخلق الآخر حتى الحاجة إليه. ولكن، بعد تحميل ثانية واحدة، وكلاهما البقاء هناك حتى ينتهي التطبيق (إلا إذا استلمت تحذيرا الذاكرة).

وهكذا أنا أتساءل: عند تبديل المستخدم اثنين الرأي الآخر، وأود أن تفريغ الآخر الذي يتم إزالة (عن طريق وضع لشيء - لها خاصية الاحتفاظ)؟ لذلك في كل مرة ينقر المستخدم على الزر، يتم تفريغ viewcontroller الحالي (بعد إزالة من superview) ويتم تحميل واحد القادم، وأضاف بأنه subview؟

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

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

المحلول

والجواب يعتمد حقا. عادة، يجب أن تقوم بتحرير وتعيين إلى لا شيء وجهة النظر التي لا تظهر، ولكن إذا كان المستخدم هو الذهاب الى التبديل بينهما في كثير من الأحيان قد ترغب في الحفاظ على رأي مخفي الاحتفاظ (مؤقتا).

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

ومن المهم أيضا أن نتذكر أن بعض المستخدمين قد تكون تستخدم أول جنرال فون، آي بود لمسات، و 3GS ذلك لن يكون لديها ذاكرة إضافية من 3GS.

وأن يقال، ويتجه الى جانب كونه محافظا مع ذاكرة لذلك أود أن الإفراج وإبطال طريقة العرض، ثم إعادة مثيل عندما يريد المستخدم لرؤيتها. فإن تأثير الخاص alloc'ing الرأي مقابل تنظيف النظام بسبب didReceiveMemoryWarning يكون عادة أقل بكثير على مستخدم التطبيق الخاص بك.

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