美文网首页
iOS runtime方法交换,动态添加属性

iOS runtime方法交换,动态添加属性

作者: 浅宇落 | 来源:发表于2018-05-06 20:52 被阅读0次

runtime在项目中越来越常见,学会runtime还是需要的,废话不多说,直接进入主题。

1.使用runtime实现方法交换

例如:加载图片,[UIImage imageNamed:@"timg"]返回图片是否加载成功结果,系统方法没有返回结果,就需要我们方法交换来实现了。

1.1先创建一个UIImage的类别

在.m文件中实现以下方法

+ (void)load {

    //方法交换

    //类方法

    MethodimageNamedMethod =class_getClassMethod(self,@selector(imageNamed:));

    Methodlzy_imageNamedMethod =class_getClassMethod(self,@selector(lzy_imageNamed:));

    method_exchangeImplementations(imageNamedMethod, lzy_imageNamedMethod);

    //对象方法

    //class_getInstanceMethod(<#Class  _Nullable __unsafe_unretained cls#>, <#SEL  _Nonnull name#>)

}

///加载图片 返回成功/失败

+ (UIImage*)lzy_imageNamed:(NSString*)name {

    UIImage*image = [selflzy_imageNamed:name];

    if(image) {

        NSLog(@"加载图片成功");

    }else{

        NSLog(@"加载图片失败");

    }

    returnimage;

}

1.2使用

导入头文件 #import "UIImage+Image.h"

//加载UIImage 返回成功/失败

UIImage*image = [UIImageimageNamed:@"timg"];

2.动态添加属性

2.1创建一个NSObject类别

在.h文件中添加属性 name

@interfaceNSObject (Property)

///名称 分类中的属性  只有声明的setter,getter方法, 没有实现的setter,getter方法, 也没有下划线成员变量

@property (nonatomic, copy) NSString *name;

@end

在.m文件中实现setter,getter方法

- (void)setName:(NSString*)name {

    //添加属性 与 类关联

    objc_setAssociatedObject(self, "name", name, OBJC_ASSOCIATION_COPY);

}

- (NSString*)name {

    return objc_getAssociatedObject(self, "name");

}

2.2使用

导入头文件 #import "NSObject+Property.h"

//创建NSObject

    NSObject*object = [[NSObjectalloc]init];

    object.name = @"runtime动态添加属性";

    NSLog(@"%@", object.name);

Demo地址: Demo地址

如有错误,请指出

相关文章

  • iOS runtime 动态添加属性,方法,方法交换案例

    iOS runtime 动态添加属性,方法,方法交换案例 动态添加属性 我之前写过分类的文章,说过,分类不能添加成...

  • runtime的理解(二)

    主要内容 利用 runtime 交换方法 利用 runtime 动态添加方法 利用 runtime 动态添加属性 ...

  • runtime和oc内存区域(2018-04-02)

    runtime常用的几个方法: 交换方法 动态添加属性 动态添加方法 1.交换方法 class_getClassM...

  • objc runtime (四)动态添加属性

    在《objc runtime (二)交换方法》中我提到过runtime最实用的就是交换方法和动态添加属性两个用法。...

  • runtime

    runtime交换方法 动态添加方法

  • iOS runtime方法交换,动态添加属性

    runtime在项目中越来越常见,学会runtime还是需要的,废话不多说,直接进入主题。 1.使用runtime...

  • iOS Runtime实践

    本文主要介绍Runtime四种使用情况: 1、交换方法2、动态添加方法3、动态添加属性4、日志统计 Objecti...

  • iOS之runtime有关

    一些与runtime有关的交换方法,改变变量的值,动态添加方法,为分类添加属性等的api

  • runtime常见问题

    1 . iOS runtime 运行时,动态添加属性方法首先, 要明白为什么要动态给类添加方法? 如果一个类方法很...

  • runtime相关

    修改系统方法 动态添加方法 动态给系统类添加属性(给分类添加属性) runtime+kvc 转换模型

网友评论

      本文标题:iOS runtime方法交换,动态添加属性

      本文链接:https://www.haomeiwen.com/subject/zdourftx.html