Dynamic Method Resolution
可以通过实现resolveInstanceMethod: 和 resolveClassMethod: 分别来提供对象和类的一个动态函数实现。
定义一个dynamic的属性:
@dynamic propertyName;
一个Objective-C 的dynamic 函数是一个c 格式的函数,至少带有两个参数:self 和_cmd. 你可以使用 class_addMethod 函数给一个类添加一个dynamic method。
void dynamicMethodIMP(id self, SEL _cmd){
// implemention ......
}
使用resolveInstanceMethod: (通过调用resolveThisMethodDynamically)动态的给一个类添加一个函数:
@implementation MyClass
+ (BOOL) resolveInstanceMethod:(SEL) aSEL{
if(aSEL == @selector(resolveThisMethodDynamically)){
class_addMethod([self clas], aSEL, (IMP) dynamicMethodIMP, “v@:”);
return YES;
}
return [super resolveInstanceMethod:aSEL];
}
Cocoa 的 NSBundle类提供了一个面向对象的,并且集成了相关服务的,便捷的动态加载接口。