object_setClass将一个对象设置为别的类类型,返回原来的Class
/**
* Sets the class of an object.
*
* @param obj The object to modify.
* @param cls A class object.
*
* @return The previous value of \e object's class, or \c Nil if \e object is \c nil.
*/
OBJC_EXPORT Class object_setClass(id obj, Class cls)
__OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_2_0);
#import "ViewController.h"
#import <objc/runtime.h>
#import "Person.h"
#import "Dog.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];
NSLog(@"p1 - %@", [p1 class]);
Class c1 = object_setClass(p1, [Dog class]);
NSLog(@"c1 - %@", [c1 class]);
NSLog(@"p1 - %@", [p1 class]);
}
image.png
网友评论