Objective-C学习之objc_property_t(获取类和协议的属性)

本文探讨Objective-C中的objc_property_t,讲解如何使用它来获取类和协议的属性信息。从属性类型的定义到实例应用,包括声明、获取属性列表、查找属性名称、获取指定名称属性的引用、解析属性名称和@encode类型字符串,以及从类中提取其属性详情。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

定义

objc_property_t

       属性类型,指向objc_property结构体

typedef struct objc_property *objc_property_t;

       通过class_copyPropertyListprotocol_copyPropertyList方法获取类和协议的属性

objc_property_t *class_copyPropertyList(Class cls, unsigned int *outCount)
objc_property_t *protocol_copyPropertyList(Protocol *proto, unsigned int *outCount)

示例

       1、声明

@interface Lender : NSObject {
     float alone;
}
@property float alone;
@end

       2、获取属性列表

id LenderClass = objc_getClass("Lender");
unsigned int outCount;
objc_property_t *properties = class_copyPropertyList(LenderClass, &outCount);

       3、查找属性名称

const char *property_getName(objc_property_t property)

       4、通过给出的名称来在类和协议中获取属性的引用

objc_property_t class_getProperty(Class cls, const char *name)
objc_property_t protocol_getProperty(Protocol *proto, const char *name, BOOL isRequiredProperty, BOOL isInstanceProperty)

       5、发掘属性名称和@encode类型字符串

const char *property_getAttributes(objc_property_t property)

       6、从一个类中获取它的属性

id LenderClass = objc_getClass("Lender");
unsigned int outCount, i;
objc_property_t *properties = class_copyPropertyList(LenderClass, &outCount);
for (i = 0; i < outCount; i++) {
     objc_property_t property = properties[i];
     fprintf(stdout, "%s %sn", property_getName(property), property_getAttributes(property));
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值