开始

是时候写写技术blog了,记录自己开发过程中所学和所得

runtime

是OC作为动态语言很关键的一个类库

里面有很多程序运行时调用的方法

OC黑科技之所在

能动态的对类,变量,方法,协议进行管理和添加

接下来是一个简单的获取类所有变量的例子:

//存放类变量数量
unsigned int propertyCount
//获取测试类的变量数组
objc_property_t *properties = class_copyPropertyList(TestClass, &propertyCount);

//遍历变量数组
for (int i =0; i < propertyCount; i++) {

    //获取变量对象
     objc_property_t property = properties[i];

    //获取变量名
    const char *propertyName = property_getName(property);
    NSString *name = @(propertyName);

     
     unsigned int attributesCount;
     //获取变量属性数组
    objc_property_attribute_t *attributes = property_copyAttributeList(property, &attributesCount);

    //遍历属性数组
     for (int x =0; x 

以上是runtime一个简单的使用,对类变量的基础操作,最近将数据导入模型对象的时候用到了这些,只是OC不支持泛型约束,目前只是编译器有泛型识别,所以将JSON数据导入模型时只能依赖协议来判断集合中的对象类型,处理导入集合的数据时会麻烦一点,需要声明协议,目前没发现更好的处理方法.

你可能感兴趣的:(开始)