根据实例获取实例名

首先import<objc/runtime.h>





- (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; 

}

 

 

你可能感兴趣的:(实例)