+ (BOOL)resolveInstanceMethod:(SEL)sel {
}
该方法的参数就是那个未知的选择子,其返回值为Boolean类型,表示这个类是否能新增一个实例方法用以处理此选择子。在继续往下执行转发机制之前,本类有机会新增一个处理此选择子的方法,假如尚未实现的方法不是实例方法而是类方法,那么运行期系统就会调用另一个方法,该方法与“resolveInstanceMethod:”类似,叫做“resolveClassMethod”。
- (id)forwardingTargetForSelector:(SEL)aSelector {
;
}
- (void)forwardInvocation:(NSInvocation *)anInvocation
- (void)doesNotRecognizeSelector:(SEL)aSelector
id (*IMP) (id, SEL, ...)
isMemberOfClass
和 isKindOfClass
“isMemberOfClass:”
能够判断出对象是否为某个特定类的实例(只有与其出创建的类型相同时才返回YES),而“isKindOfClass
:”则能够判断出对象是否为某类或其派生类的实例。NSMutableDictionary *mutableDict = [[NSMutableDictionary alloc] init];
BOOL bool1 = [mutableDict isMemberOfClass:[NSDictionary class]];
BOOL bool2 = [mutableDict isMemberOfClass:[NSMutableDictionary class]];
BOOL bool3 = [mutableDict isKindOfClass:[NSDictionary class]];
BOOL bool4 = [mutableDict isKindOfClass:[NSArray class]];