Runtime中的property_getName和property_getAttributes

一、首先创建一个runtime的测试用例

@interface RtTest : NSObject

@property (nonatomic, assign) int sidNum;

@end

@implementation RtTest

@end


二、调用获取runtime的property

unsigned int count = 0;
objc_property_t* propertys = class_copyPropertyList([RtTest class], &count);
for (unsigned int i = 0; i < count; i++) {
    objc_property_t property = propertys[i];
    assert(property != nil);
    const char* name = property_getName(property);
    NSLog(@"name: %s", name);

    NSString* attrs = @(property_getAttributes(property));
    NSLog(@"artStr: %@", attrs);
}

得到的输出结果是:

name:sidNum

artStr:Ti,N,V_sidNum


解析:其中T是类型i 代表int;V是名字接着sidNum,N非原子性nonatomic


三、结论:

1.property_getName意如其名

2.property_getAttributes其作用就是用来获取属性的真实类型。




NSString *const TypeInt = @"i"; 整数类型
NSString *const TypeShort = @"s"; 双字节类型
NSString *const TypeFloat = @"f"; float 浮点型
NSString *const TypeDouble = @"d"; double 双精度浮点型
NSString *const TypeLong = @"l"; long 长整型
NSString *const TypeLongLong = @"q";
NSString *const TypeChar = @"c"; char 单字节类型
NSString *const TypeBOOL1 = @"c"; bool 类型
NSString *const TypeBOOL2 = @"b"; bool 类型
NSString const TypePointer = @""; 指针类型
NSString *const TypeIvar = @"^{objc_ivar=}";
NSString *const TypeMethod = @"^{objc_method=}"; oc 方法类型
NSString *const TypeBlock = @"@?"; oc 闭包类型
NSString *const TypeClass = @"#"; oc class 类类型
NSString *const TypeSEL = @":"; oc slector 触发器方法类型
NSString *const TypeId = @"@"; oc 泛型id类型



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值