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类提供了一个面向对象的,并且集成了相关服务的,便捷的动态加载接口。

posted @ 2012-06-04 16:34  agefisher  阅读(194)  评论(0编辑  收藏  举报