Skip to content

Instantly share code, notes, and snippets.

@iiiyu
Created July 30, 2013 07:21
Show Gist options
  • Save iiiyu/6110935 to your computer and use it in GitHub Desktop.
Save iiiyu/6110935 to your computer and use it in GitHub Desktop.
运行时候获得属性的名称
- (NSString *) nameWithInstance:(id)instance
{
unsigned int numIvars = 0;
NSString *key=nil;
Ivar * ivars = class_copyIvarList([self class], &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(self, thisIvar) == instance)) {
key = [NSString stringWithUTF8String:ivar_getName(thisIvar)];
break;
}
}
free(ivars);
return key;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment