当前位置:   article > 正文

OC_动态方法决议给一个类添加类方法_oc 根据sel动态添加方法

oc 根据sel动态添加方法
  1. + (BOOL)resolveClassMethod:(SEL)sel{
  2. Class cls = objc_getMetaClass([NSStringFromClass(self) UTF8String]);
  3. IMP impPoint = class_getMethodImplementation(cls, @selector(cx_clsMethod));
  4. Method clsMethon = class_getClassMethod(cls, @selector(cx_clsMethod));
  5.  const char *encoding = method_getTypeEncoding(clsMethon);
  6. class_addMethod(cls, sel, impPoint, encoding);
  7. return YES;
  8. }
  9. +(BOOL)resolveInstanceMethod:(SEL)sel
  10. {
  11. //动态添加一个方法!!
  12. /*
  13. 1.cls 哪个类
  14. 2.SEL
  15. 3.IMP
  16. 4.返回值类型!
  17. */
  18. class_addMethod(self, sel, (IMP)cx_instanceMethod, "v@:@");
  19. return [super resolveInstanceMethod:sel];
  20. }
  21. +(void)cx_clsMethod{
  22. NSLog(@"动态添加一个类方法!");
  23. }
  24. void cx_instanceMethod(id obj,SEL sel,NSString * objc){
  25. NSLog(@"动态添加一个对象方法!");
  26. NSLog(@"%@--%@--%@",obj,NSStringFromSelector(sel),objc);
  27. }

再给一个类或者对象发送消息时如果找不到对应的方法实现,则会进入上诉两个方法中,可在上诉方法中动态添加方法.网上的一些博客只给出如何添加对象方法,而没写如何添加类方法,之前的笔记丢失现在想起来就记录在博客上,希望能帮到需要用的人。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/428380
推荐阅读
相关标签
  

闽ICP备14008679号