gpt4 book ai didi

objective-c - 如何检测 Objective-C 中的属性返回类型

转载 作者:太空狗 更新时间:2023-10-30 03:13:57 27 4
gpt4 key购买 nike

我在运行时在 objective-c 中有一个对象,从中我只知道 KVC 键,我需要检测此属性的返回值类型(例如,我需要知道它是 NSArray 还是 NSMutableArray),如何才能我这样做?

最佳答案

你说的是运行时属性自省(introspection),这恰好是 Objective-C 的功能 very good at .

在您描述的情况下,我假设您有这样一个类:

@interface MyClass
{
NSArray * stuff;
}
@property (retain) NSArray * stuff;
@end

它以 XML 格式编码如下:

<class>
<name>MyClass</name>
<key>stuff</key>
</class>

根据这些信息,您想要重新创建该类并为其赋予适当的 stuff 值。

它可能是这样的:

#import <objc/runtime.h>

// ...

Class objectClass; // read from XML (equal to MyClass)
NSString * accessorKey; // read from XML (equals @"stuff")

objc_property_t theProperty =
class_getProperty(objectClass, accessorKey.UTF8String);

const char * propertyAttrs = property_getAttributes(theProperty);
// at this point, propertyAttrs is equal to: T@"NSArray",&,Vstuff
// thanks to Jason Coco for providing the correct string

// ... code to assign the property based on this information

Apple 的文档(上面的链接)包含关于您可以在 propertyAttrs 中看到的内容的所有细节。

关于objective-c - 如何检测 Objective-C 中的属性返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/769319/

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