gpt4 book ai didi

objective-c - 如何检查 objective-c 对象?

转载 作者:太空狗 更新时间:2023-10-30 03:40:33 25 4
gpt4 key购买 nike

在 ruby​​ 中,我可以通过 .inspect 从对象了解细节。我怎样才能在 objective-c 中做类似的事情?谢谢你。

最佳答案

如果你只是想打印一些东西,你可以使用 description 如前所述。

我自己不是 Ruby 专家,但如果我理解正确的话,Ruby 中的 .inspect 会打印一个对象的所有实例变量。这不是 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

关于objective-c - 如何检查 objective-c 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3597185/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com