您的位置:首页 > 其它

根据变量的引用,获取变量名

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: