سؤال

في الهدف - ج، يمكنك إعلان كتلة بأنها تتم مزامنتها على بعض الكائن باستخدام @synchronized بناء. سيبدو شيء هكذا:

@synchronized (self) {
    // Do something useful
}

ومع ذلك، أنا فضولي ما بالضبط self يشير إلى متى لديك طريقة ثابتة (+ بدلا من -). حاولت النظر من خلال مستندات Apple، وهم يلمحون إلى أنه على ما يرام، لكن لا يفسرون ذلك حقا. أعلم أنه يعمل، أنا فقط فضولي ما يعنيه.

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

المحلول

self من الداخل من طريقة الفصل (ثابت) يشير إلى كائن الفصل.

نصائح أخرى

في الهدف - ج self يتم تحديدها حسب السياق. في طريقة مثيل، سيكون ذلك مثالا يسمى. في طريقة ثابتة، سيكون كائن الفصل نفسه (أي نتيجة [self class] في طريقة مثيل)

مع الإجابات أعلاه، ضع في اعتبارك فقط أنه إذا استدعي مؤشر ترابط واحد طريقة مثيل باستخدام NeNCroncronized (الذاتي)، وينطلق مؤشر ترابط آخر طريقة فئة باستخدام NeckNCronized (الذات)، فلن يحدث أي مزامنة بين المكالمتين، لأنهم هم باستخدام كائنات مختلفة للمزامنة.

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