В рубине я могу. Инспектировать объект, чтобы узнать подробности. Как я могу сделать подобное в объективном c? Спасибо.Как проверить объективный объект c?
ответ
Если вы просто хотите что-то для печати можно использовать description
как было сказано ранее.
Я сам не парень-рубин, но если я правильно понял, тов Ruby печатает все переменные экземпляра объекта. Это не что-то встроенное в Cocoa. Если вам это нужно, вы можете использовать систему времени выполнения для запроса этой информации.
Вот быстрая категория я соединял, который делает это:
#import <objc/objc-class.h>
@interface NSObject (InspectAsInRuby)
- (NSString *) inspect;
@end
@implementation NSObject (InspectAsInRuby)
- (NSString *) inspect;
{
NSMutableString *result = [NSMutableString stringWithFormat: @"<%@:%p", NSStringFromClass([self class]), self ];
unsigned ivarCount = 0;
Ivar *ivarList = class_copyIvarList([self class], &ivarCount);
for (unsigned i = 0; i < ivarCount; i++) {
NSString *varName = [NSString stringWithUTF8String: ivar_getName(ivarList[i])];
[result appendFormat: @" %@=%@", varName, [self valueForKey: varName]];
}
[result appendString: @">"];
free(ivarList);
return result;
}
@end
Этот метод не будет отображать какие-либо исполняемые файлы или частные iVars. – Berik
-[NSObject description]
содержит базовое описание объекта (аналогично toString
на Java - я действительно не знаю о .inspect
в Ruby). description
автоматически вызывается при печати объекта в NSLog
(например, NSLog(@"@%", myObject)
).
Для других методов самоанализа я бы предложил посмотреть ссылку NSObject. Есть также много вещей, которые вы можете сделать непосредственно с the Objective-C runtime.
Просто распечатайте его с NSLog
NSLog(@"%@", myObject);
Он будет автоматически вызывать description
метод объекта. Если это класс, который вы создали, вам нужно будет определить, что (верните NSString
с информацией).
Посмотрите на this question.
Метод описания NSObject подобен инспектировать
В вашем файле ч NSObject пишет это:
- (NSDictionary *) dictionaryRepresentation;
В вашем файле м NSObject пишут это:
(NSDictionary *) dictionaryRepresentation { неподписанных INT кол = 0; // Получить список всех свойств в классе. objc_property_t * properties = class_copyPropertyList ([self class], & count);
NSMutableDictionary * dictionary = [[NSMutableDictionary alloc] initWithCapacity: count];
для (INT I = 0; я < рассчитывать; я ++) { NSString * ключ = [NSString stringWithUTF8String: property_getName (свойства [I])]; NSString * value = [self valueForKey: key];
// Only add to the NSDictionary if it's not nil. if (value) [dictionary setObject:value forKey:key];
}
свободные (свойства);
словарь о возврате; }
(NSString *) описание { return [NSString stringWithFormat: @ "% @", [self dictionaryRepresentation]]; }
Каков реальный вопрос? этот один или тот http://stackoverflow.com/questions/3597186/how-can-i-inspect-an-objective-c-object, в любом случае спам с дубликатами нахмурился ... – t0mm13b
@ tommieb75: с учетом одинаковые сроки и содержание сообщений, я бы сказал, что это была простая ошибка с двойной отправкой. –
Извините, я думаю, что моя сеть нестабильна, поэтому она публикует два вопроса. – Tattat