سؤال

وأنا تصحيح برنامج التي تم كتابتها ل iPhone OS 2.2.1 ولديه إلى إعادة صياغة قليلا عن 3.0. أن وجود قائمة من جميع المكالمات رسالة الهدف-C التي تبذل، بما في ذلك "وراء الكواليس" المكالمات، يكون من المفيد جدا.

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

وشكرا!

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

المحلول

وأنا أحسب أخيرا خارج بسيطة نسبيا (وإن لم يكن أنيقة على الإطلاق) طريقة للقيام بذلك.

وأثناء تصحيح على اي فون، أقوم بإعداد نقطة توقف لobjc_msgSend. وبعد ذلك كتبته في هذا السيناريو GDB بسيط:

while 1
printf "[%s %s]", (char *)object_getClassName($r0), (char *) $r1 
c
end

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

ملاحظة هذا سوف تعمل فقط على اي فون نفسها.

نصائح أخرى

وNSObjCMessageLoggingEnabledinstrumentObjcMessageSends(BOOL) توأمه) المتوفرة في جهاز محاكاة، ولكن ليس على الجهاز.

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