object_isClass 判断是否是一个不为空的类对象
~~~
/**
* Returns whether an object is a class object.
*
* @param obj An Objective-C object.
*
* @return true if the object is a class or metaclass, false otherwise.
*/
OBJC_EXPORT BOOL object_isClass(id obj)
__OSX_AVAILABLE_STARTING(__MAC_10_10, __IPHONE_8_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];
BOOL isp1 = object_isClass([p1 class]);
Person * p2;
BOOL isp2 = object_isClass([p2 class]);
NSString * p3 = @"test";
BOOL isp3 = object_isClass([p3 class]);
NSLog(@"%i", isp1);
NSLog(@"%i", isp2);
NSLog(@"%i", isp3);
}
~~~
输出:
![](https://box.kancloud.cn/2016-05-05_572b0153bd8e2.jpg)
- 前言
- object_getIvar
- object_getClass
- object_getClassName
- object_setClass
- object_isClass
- object_setIvar
- objc_getClass
- Too many arguments to function call...
- objc_msgSend
- class_copyIvarList和class_copyMethodList
- method_exchangeImplementations
- 运用SEL,运行时改变两个方法的实现
- class_getInstanceMethod和class_getClassMethod
- class_respondsToSelector
- Objective-C Runtime 运行时之三:方法与消息