سؤال

دعنا نقول أن لدي رمز مثل هذا ...

- (id) init {
    ...
    self.myImage1 = [NSImage imageNamed:@"some_image_name"]; // setter retains
    ...
}

- (void) setStatusItemImage
{
    [self.statusItem setImage:self.myImage1];
}

أرغب أيضا في تحريك عنصر الحالة حتى أنشأت 6 متغيرات من أيقونة "تحديث" عنصر الحالة وحلقة عليه عبر NSTIMER، مع الطريقة المستهدفة مماثلة لما سبق. الأسئلة هي:

  1. كيف يمكنني تعيين صورة بكفاءة؟ على سبيل المثال، هل هو موافق إذا كنت تستخدم NSIMAGE محمولة / محملة مسبقا؟
  2. هل هناك طريقة لتحريك عنصر الحالة بطريقة أكثر كفاءة؟ أنا لا أعرف أي أشياء الرسوم المتحركة الأساسية، لذا يرجى تحمل معي.
هل كانت مفيدة؟

المحلول

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

هكذا قال، imageNamed: يكون بطيء. كنت دائما تقريبا يجب أن تستخدم nsbundle و -[NSImage initWithContentsOfFile:] في حين أن.

هل هو موافق إذا كنت تستخدم NSIMAGE المحتفظ به / محملة مسبقا؟

لماذا لا ولماذا فإن عنصر الحالة يهتم ما إذا كانت الصورة تحتفظ بها شيء آخر أم لا؟

هل هناك طريقة لتحريك عنصر الحالة بطريقة أكثر كفاءة؟

setImage: هو السبيل الوحيد. طالما أنك لا تقم بتحميل كل صورة في كل مرة، يجب أن يكون لديك أي مشاكل في الكفاءة.

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