ما هو الهدف - C مكافئ "Tostring ()"، للاستخدام مع NSLOG؟

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

  •  12-09-2019
  •  | 
  •  

سؤال

هل هناك طريقة يمكنني تجاوزها في فئات مخصصة بحيث عندما

      NSLog(@"%@", myObject) 

يطلق عليه، سيقوم بطباعة الحقول (أو أيا كان رأيا مهما) من كائني؟ أعتقد أنني أبحث عن الهدف - أي ما يعادل جافا toString().

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

المحلول

انها description طريقة مثيل، معلن باسم:

- (NSString *)description

إليك تطبيق مثال (بفضل Grahamparks):

- (NSString *)description {
   return [NSString stringWithFormat: @"Photo: Name=%@ Author=%@", name, author];
}

نصائح أخرى

أضف هذا إلى @implementation من فئة الصور الخاصة بك:

- (NSString *)description {
   return [NSString stringWithFormat:@"Photo: Name=%@ Author=%@",name,author];
}

يمكنك تجاوز طريقة وصف NSOBJECT:

- (NSString *)description

حول موضوع تسجيل أوصي بهذا مشاركة مدونة لتسجيل أفضل في الهدف - ج.

هناك وظيفتان يمكنك استخدامهما.

- (NSString*)description

سيتم عرض هذا عند وضع كائنك كما، أي معلمة ل NSLog. وبعد وظيفة الوصف الآخر هو:

- (NSString*)debugDescription

سيتم استدعاء هذا عند القيام به po anInstanceOfYourClass في نافذة الأوامر Debug. إذا كان صفك ليس لديه debugDescription وظيفة، ثم فقط description وسوف يطلق.

لاحظ أن الطبقة الأساسية NSObject لديه description نفذت، لكنها عارية عارية إلى حد ما: يعرض فقط عنوان الكائن فقط. هذا هو السبب في أنني أوصي بأن تنفذ description في أي فصل تريد الحصول على معلومات خارج، خاصة إذا كنت تستخدم description الطريقة في التعليمات البرمجية الخاصة بك. إذا كنت تستخدم description في التعليمات البرمجية الخاصة بك، أقترح عليك تنفيذ debugDescription كذلك، أيضا صنع debugDescription المزيد من Verbose.

سيؤدي ذلك إلى إخراج الأصوات المتاحة:

    NSLog((@"speechVoices:%", [[AVSpeechSynthesisVoice speechVoices] description] ));
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top