美文网首页
运行时+给分类添加属性

运行时+给分类添加属性

作者: Frankkkkk | 来源:发表于2019-08-16 16:08 被阅读0次

运行时应用场景

  • 1.在分类中,通过关联对象,给分类动态添加属性,能够让分类解耦,适合开发框架!
  • 2.动态获得一个类的属性列表,可以开发字典转模型框架,MJExtension,JSONModel...
  • 3.交换方法,动态交换方法的地址,用处主要在接管系统方法。AFN网络框架中有用到。

具体使用

以创建UIImageView的分类为例,给UIImageView类添加一个urlStr属性。
1、新建分类fkWebImage分类
2、分类代码
2.1 .h添加需要的属性

#import <UIKit/UIKit.h>

NS_ASSUME_NONNULL_BEGIN

@interface UIImageView (fkWebImage)
@property (nonatomic, copy) NSString *urlStr;
@end

NS_ASSUME_NONNULL_END

2.2 .m导入头文件<objc/runtime.h>
2.3 重写urlStr的set和get方法,代码如下

#import "UIImageView+fkWebImage.h"
#import <objc/runtime.h>

@implementation UIImageView (fkWebImage)

const void *fk_urlKey = "fk_urlKey";
 
- (void)setUrlStr:(NSString *)urlStr {
    objc_setAssociatedObject(self, fk_urlKey, urlStr, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}

- (NSString *)urlStr {
    return objc_getAssociatedObject(self, fk_urlKey);
}

@end

3、外部测试

#import "ViewController.h"
#import "UIImageView+fkWebImage.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    
    UIImageView *imageView = [[UIImageView alloc] init];
    imageView.urlStr = @"http://www.baidu.com/abc.jpg";
    NSLog(@"%@", imageView.urlStr);
}

相关文章

  • 2020-03-09

    分类: 运行时添加类方法列表、实例方法列表、实现协议列表,没有属性列表,使用@property添加的属性,编译期间...

  • 子类和分类怎么选择?

    属性无法满足开发需求的时候,选择子类. 方法不够灵活的时候,选择分类. 分类可以利用运行时,动态添加属性.

  • 分类(Category)添加属性

    OC的分类允许给分类添加属性,但不会自动生成setter和getter,可通过运行时建立关联引用,添加一个titl...

  • Add CGFloat property to Category

    给扩展类添加CGFloat类型的属性 IOS中可以使用运行时动态给类添加属性,对象类型的属性添加方法大家都知道 但...

  • Category分类注意事项

    1.分类用来添加方法,不能用来添加属性(可以利用运行时特性,动态绑定属性来实现) @proprety只会生成get...

  • ios 利用runtime给分类动态添加属性

    1、分类默认是不能添加属性的,这里我们用runtime实现给分类添加属性,本例给UIView添加一个string属...

  • 运行时给分类添加属性

    今天写程序的时候写了一个分类,我们都知道分类是在不改变原类的基础上添加新方法,却不能添加属性,若是添加了那么调用的...

  • 运行时+给分类添加属性

    运行时应用场景 1.在分类中,通过关联对象,给分类动态添加属性,能够让分类解耦,适合开发框架! 2.动态获得一个类...

  • runtime相关

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

  • Category 用runtime 关联对象

    如何给NSArray添加一个属性(不能使用继承)?不能用继承,难道用分类?但是分类只能添加方法不能添加属性啊(Ca...

网友评论

      本文标题:运行时+给分类添加属性

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