首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

object-c 动态反照

2012-08-27 
object-c 动态反射最近要做一个ios平台的快速开发框架 需要用到高级语言的反射的功能:总结了一下object-c

object-c 动态反射
最近要做一个ios平台的快速开发框架 需要用到高级语言的反射的功能:
总结了一下object-c的反射功能:
1:
Class clazz = [self class];
    u_int count;

    Ivar* ivars = class_copyIvarList(clazz, &count);
    NSMutableArray* ivarArray = [NSMutableArray arrayWithCapacity:count];
    for (int i = 0; i < count ; i++)
    {
        const char* ivarName = ivar_getName(ivars[i]);
        [ivarArray addObject:[NSString  stringWithCString:ivarName encoding:NSUTF8StringEncoding]];
    }
    free(ivars);

    objc_property_t* properties = class_copyPropertyList(clazz, &count);
    NSMutableArray* propertyArray = [NSMutableArray arrayWithCapacity:count];
    for (int i = 0; i < count ; i++)
    {
        const char* propertyName = property_getName(properties[i]);
        [propertyArray addObject:[NSString  stringWithCString:propertyName encoding:NSUTF8StringEncoding]];
    }
    free(properties);

    Method* methods = class_copyMethodList(clazz, &count);
    NSMutableArray* methodArray = [NSMutableArray arrayWithCapacity:count];
    for (int i = 0; i < count ; i++)
    {
        SEL selector = method_getName(methods[i]);
        const char* methodName = sel_getName(selector);
        [methodArray addObject:[NSString  stringWithCString:methodName encoding:NSUTF8StringEncoding]];
    }
    free(methods);

    NSDictionary* classDump = [NSDictionary dictionaryWithObjectsAndKeys:
                               ivarArray, @"ivars",
                               propertyArray, @"properties",
                               methodArray, @"methods",
                               nil];

    NSLog(@"%@", classDump);

2:

NSString* className = @"Car";
id* p = [Magic createClassByName:className];
[p turnOnEngine];

3:
Class cls = objc_get_class( "Test" );
id obj = class_create_instance( cls );
[ obj free ];

1 楼 jiangzhoubai 2012-06-04   求下源码,大大。 2 楼 jiangzhoubai 2012-06-04   jiangzhoubai 写道求下源码,大大。
邮箱 jiangzhoubai@gmail.com

热点排行