سؤال

في المثال التالي كم عدد الرسائل المرسلة إلى myObject?

- (void) myMethod:(id) myObject
    NSLog(@"%@", myObject.myStringProperty);
    NSLog(@"%@", myObject.myStringProperty);
    NSLog(@"%@", myObject.myStringProperty);
}

أنا فقط أشعر بالفضول بشأن إمكانية تخزين Objective-c للقيمة التي يتم إرجاعها مؤقتًا myStringProperty على المكدس.القيمة التي تم إرجاعها بواسطة myStringProperty يمكن أن يتغير بين الرسائل المتعاقبة لذا ربما لا يكون التخزين المؤقت منطقيًا.

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

المحلول

ثلاثة

أنا فقط أشعر بالفضول بشأن إمكانية قيام Objective-c بالتخزين المؤقت للقيمة التي يتم إرجاعها بواسطة myStringProperty على المكدس.يمكن أن تتغير القيمة التي يتم إرجاعها بواسطة myStringProperty بين الرسائل المتعاقبة، لذا ربما لا يكون التخزين المؤقت منطقيًا.

كلا، لم يتم تخزينها مؤقتًا.يتم إرسال كل رسالة objc، بشرط بالطبع myObject ليس nil.

ليس لدى المترجم أي فكرة عن أي آثار جانبية في تنفيذ الطريقة (1) أو تأثير الحالة العالمية (2).

  1. على سبيل المثالهل يتغير myObject أو أي شيء يشير إليه أثناء تنفيذ الحصول على myStringProperty?
  2. على سبيل المثالهل تتأثر النتيجة بالوقت الحالي؟

نصائح أخرى

يمكنك تعيين نقطة توقف على -[myObject myStringProperty] وانظر بنفسك.إذا كانت myStringProperty عبارة عن طريقة getter تقوم بتنفيذها بنفسك، فما عليك سوى النقر على الحضيض الأيسر بجوار تطبيق الطريقة لتعيين نقطة التوقف.

إذا كانت هذه طريقة وصول مركبة، فأدخلها كنقطة توقف رمزية في متصفح نقاط التوقف الخاص بـ Xcode.انقر على أيقونة السهم الأيمن في قسم المتصفح لتحديد متصفح نقاط التوقف، ثم اضغط على + في الجزء السفلي من النافذة، واختر "إضافة نقطة توقف رمزية...".اكتب -[TheClassName myStringProperty] في حقل الرمز، ثم انقر فوق تم.

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