根据变量的引用,获取变量名
2014-03-17 14:43
281 查看
#import <objc/runtime.h>
#pragma mark - 根据变量的引用,获取变量名
/**
*根据变量的引用,获取变量名
*/
- (NSString *)nameForInstance:(id)instance ofClass:(Class)targetClass
{
unsigned int numIvars =
0;
NSString *key=nil;
Ivar * ivars = class_copyIvarList(targetClass, &numIvars);
for(int i =
0; i < numIvars; i++)
{
Ivar thisIvar = ivars[i];
const char *type =
ivar_getTypeEncoding(thisIvar);
NSString *stringType = [NSString
stringWithCString:type encoding:NSUTF8StringEncoding];
if (![stringType hasPrefix:@"@"])
{
continue;
}
if ((object_getIvar(targetClass, thisIvar) == instance))
{
key = [NSString
stringWithUTF8String:ivar_getName(thisIvar)];
break;
}
}
free(ivars);
return key;
}
#pragma mark - 根据变量的引用,获取变量名
/**
*根据变量的引用,获取变量名
*/
- (NSString *)nameForInstance:(id)instance ofClass:(Class)targetClass
{
unsigned int numIvars =
0;
NSString *key=nil;
Ivar * ivars = class_copyIvarList(targetClass, &numIvars);
for(int i =
0; i < numIvars; i++)
{
Ivar thisIvar = ivars[i];
const char *type =
ivar_getTypeEncoding(thisIvar);
NSString *stringType = [NSString
stringWithCString:type encoding:NSUTF8StringEncoding];
if (![stringType hasPrefix:@"@"])
{
continue;
}
if ((object_getIvar(targetClass, thisIvar) == instance))
{
key = [NSString
stringWithUTF8String:ivar_getName(thisIvar)];
break;
}
}
free(ivars);
return key;
}
相关文章推荐
- 反射根据变量的引用获取变量名
- IOS高级教程2:反射根据变量的引用获取变量名
- IOS高级教程2:反射根据变量的引用获取变量名
- IOS高级教程2:反射根据变量的引用获取变量名
- 反射根据变量的引用获取变量名
- (一)获取类的三种方式,根据类获取成员变量,成员方法,直接实现的接口,自己的构造方法,直接的父类
- 与struct相关的宏定义 --- 根据成员变量偏移,获取struct起始地址
- 根据WOS获取某篇SCI论文被引用次数[Web of Science 统计]
- 根据作用域来确定恰当的变量引用
- C#中根据变量获取变量名字符串
- 【C/C++学院】0814-引用高级、引用高级增加/auto自动变量自动根据类型创建数据/Bool/Enum/newdelete全局/大数据乘法与结构体/函数模板与auto/宽字符本地化/inline
- BeanSheel脚本读取Excel动态获取城市设为变量引用
- 根据变量值获取变量名
- 根据C++标准,如果const的引用被初始化为对一个临时变量的引用,那么它会使这个临时变量的生命期变得和它自己一样
- 根据变量获取变量名
- eval获取使用字符串同名变量
- Strust2 --- 根据泛型封装Action的模型驱动ModelDriven<T>获取model对象
- Runtime – 获取成员变量、值、动态创建类
- 百度地图API根据具体地址获取经纬度