هل يجب علي حفظ السلاسل التي يتم إرجاعها بواسطة NSLocalizedString()؟

StackOverflow https://stackoverflow.com/questions/600770

  •  03-07-2019
  •  | 
  •  

سؤال

أنا أعمل على تطبيق iPhone الذي نقوم بترجمته باللغتين الإنجليزية واليابانية لإصدارنا الأولي.كثيرا ما نتصل NSLocalizedString() لتحميل السلسلة المترجمة المناسبة للعرض.هل من الأفضل عمومًا حفظ السلاسل المترجمة في متغيرات الحالة في المرة القادمة التي نحتاج إليها فيها، أم أنني أقوم بالتحسين الدقيق هنا وهل يجب علي فقط إعادة تحميل السلسلة في كل مرة تكون هناك حاجة إليها؟

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

المحلول

هذه واحدة من تلك الإجابات "يعتمد ذلك".

يتضمن استدعاء NSLocalizedString إجراء بحث في الحزمة.عمليات البحث هذه سريعة جدًا ولكنها ليست مجانية.يعتمد ما إذا كان سيتم تخزين قيمة الإرجاع هذه مؤقتًا أو مجرد الاتصال بـ NSLocalizedString على كيفية استخدامها.

  1. إذا كنت تنقل العائد إلى ملعب Textfield لشيء مثل Uilabel أو UitableViewCell ، فسيحدث البحث فقط عند تعيين العقار لأول مرة.

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

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

أود أن أقول إنه بالنسبة لشيء مثل رقم 3، يجب أن تبدأ بتخزين النتائج مؤقتًا.

بالنسبة للآخرين، اكتبهم بالطريقة الأكثر ملاءمة وإذا كانت لديك مشكلات في الأداء في واجهة المستخدم الخاصة بك، فاستخدم الأدوات لتضييق نطاق السبب.إذا كان NSLocalizedString، فقم بتحسينه وفقًا لذلك.

نصائح أخرى

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

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

[[NSBundle mainBundle] localizedStringForKey:(key) value:@"" table:nil]

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

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