🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
object_getIvar 获得类的变量(包括“所谓私有变量”) ~~~ /** * Reads the value of an instance variable in an object. * * @param obj The object containing the instance variable whose value you want to read. * @param ivar The Ivar describing the instance variable whose value you want to read. * * @return The value of the instance variable specified by \e ivar, or \c nil if \e object is \c nil. * * @note \c object_getIvar is faster than \c object_getInstanceVariable if the Ivar * for the instance variable is already known. */ OBJC_EXPORT id object_getIvar(id obj, Ivar ivar) __OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_2_0); ~~~ ~~~ #import <Foundation/Foundation.h> @interface Person : NSObject @property(nonatomic, assign) NSInteger age; @property(nonatomic, strong) NSString * name; @end ~~~ ~~~ #import "Person.h" @interface Person () @property(nonatomic, strong) NSString * sex; @end @implementation Person - (instancetype)init {   self = [super init];     if (self) {         self.sex = @"-----------";     }     return self; } @end ~~~ ~~~ #import "ViewController.h" #import <objc/runtime.h> #import "Person.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. Person * p1 = [[Person alloc] init]; Ivar ivar = class_getInstanceVariable([p1 class], "_sex"); id sex = object_getIvar(p1, ivar); NSLog(@"%@", sex); } ~~~ 输出: ![](https://box.kancloud.cn/2016-05-05_572b0152c7088.jpg)