美文网首页
iOS 重构之路 - 分类属性懒加载

iOS 重构之路 - 分类属性懒加载

作者: SoaringHeart | 来源:发表于2018-08-09 09:51 被阅读247次

iOS 分类属性实现懒加载
(用途:项目重构,继承->组合)

创建控制器分类 UIViewController+Helper.h

.h文件
#import <UIKit/UIKit.h>
#import "AnimationObject.h"

@interface UIViewController (Helper)

@property (strong, nonatomic) UITableView *tableView;

+(AnimationObject *)animation;;

@end

.m文件

#import "UIViewController+Helper.h"
#import <objc/runtime.h>

@interface UIViewController ()<UITableViewDataSource,UITableViewDelegate>

@end

@implementation UIViewController (Helper)

@dynamic tableView;

+(AnimationObject *)animation{
    AnimationObject * ani = objc_getAssociatedObject(self, _cmd);
    if (!ani) {
        ani = [[AnimationObject alloc]init];
        objc_setAssociatedObject(self, _cmd, ani, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
    }
    return ani;
}

- (UITableView *)tableView {
    UITableView* table = objc_getAssociatedObject(self, _cmd);
    if (table == nil) {
        table = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain];
        [table registerClass:[UITableViewCell class] forCellReuseIdentifier:@"UITableViewCell"];
        table.layer.borderColor = [UIColor grayColor].CGColor;
        table.layer.borderWidth = 1;
        table.delegate = self;
        table.dataSource = self;
        objc_setAssociatedObject(self, _cmd, table, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
    }
    
    return table;
}

总结:tableView一类有代理方法的属性用非类方法;动画对象一类用类方法;

相关文章

  • iOS 重构之路 - 分类属性懒加载

    iOS 分类属性实现懒加载(用途:项目重构,继承->组合)

  • OC方法的懒加载

    前言 iOS中,大家都比较熟悉属性的懒加载,其实OC方法也能懒加载。在程序运行时,去加载指定方法,可以起到节约性能...

  • Android 懒加载

    ���最近在重构公司公司的主页,其中用到了懒加载,所以找了网上的懒加载的介绍的博客,读了好几篇关于懒加载的文件,发...

  • iOS底层原理19:类和分类的加载

    前面已经探究了类的加载流程,类分为懒加载类和非懒加载类,他们有不同加载流程,下面来探究下分类的加载,以及分类和类搭...

  • iOS 懒加载没有作用

    懒加载之后,不能再用“_”使用属性,必须用self,否则懒加载没有作用

  • 项目优化

    图片懒加载,数据懒加载, 路由懒加载 1.图片懒加载原理 1.1 开始时 不设置src属性 1.2 图片在可视区域...

  • OC底层原理14-类扩展及分类的关联对象

    iOS--OC底层原理文章汇总[/p/14911da92f74] 在前面的文章中,探究了类的加载以及分类在懒加载和...

  • Swift的懒加载和只读属性的介绍

    懒加载 在 iOS 开发中,懒加载是无处不在的 懒加载的格式如下: lazy var person: Person...

  • ZJ弹出框快捷代码

    自定义View 初始化 frame 写成CGRectZero即可 自定义分类属性 懒加载 初始化frame 点击事...

  • Swift懒加载

    懒加载的2个好处:延迟加载属性(UI类型控件一般都会延迟加载)在后边的代码中,延迟加载的属性,不用再强制解包 懒加...

网友评论

      本文标题:iOS 重构之路 - 分类属性懒加载

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