ما هو الهدف - C مكافئ "Tostring ()"، للاستخدام مع NSLOG؟
-
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] ));