gpt4 book ai didi

objective-c - 在 Cocoa/Cocoa Touch 中,有没有办法在运行时动态确定类的 ivars?

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

有没有办法获取类的所有键值对的字典之类的东西?

最佳答案

您必须使用 Objective-C Runtime functions 自己滚动.这是一些非常基本的示例代码。请注意,获取类的 ivars 不会获取其父类(super class)的 ivars。您需要明确地执行此操作,但这些功能都在运行时。

#import <objc/objc-runtime.h>
#include <inttypes.h>
#include <Foundation/Foundation.h>

@interface Foo : NSObject
{
int i1;
}
@end
@implementation Foo
@end

@interface Bar : Foo
{
NSString* s1;
}

@end
@implementation Bar
@end

int main(int argc, char** argv)
{
NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];

unsigned int count;
Ivar* ivars = class_copyIvarList([Bar class], &count);
for(unsigned int i = 0; i < count; ++i)
{
NSLog(@"%@::%s", [Bar class], ivar_getName(ivars[i]));
}
free(ivars);


[pool release];
}

关于objective-c - 在 Cocoa/Cocoa Touch 中,有没有办法在运行时动态确定类的 ivars?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1631358/

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