美文网首页iOS
为Category添加属性

为Category添加属性

作者: 寻常_0 | 来源:发表于2017-09-01 15:31 被阅读0次

一般认为Category不能添加变量,其实可以使用@dynamic 来动态添加的。 (即运行时Runtime)
分类里面不能添加Ivar是因为分类本身并不是一个真正的类,它并没有自己的ISA。
原文出自http://blog.csdn.net/petyou123/article/details/51161522

1.创建UIViewController的类别并添加几个属性

#import <UIKit/UIKit.h>

@interface UIViewController (DefaultPage)

@property (nonatomic, strong) UIView *noMore_bgView;
@property (nonatomic, strong) UIImageView *noMore_showImg;
@property (nonatomic, strong) UILabel *noMore_showLab;

@end

2.UIViewController类别.m的实现 需要导入#import <objc/runtime.h>

#pragma mark --------------------  添加属性 ----------------------
#import "UIViewController+DefaultPage.h"
#import <objc/runtime.h>

@implementation UIViewController (DefaultPage)

static char *BgViewKey = "BgViewKey";
static char *ImgKey = "ImgKey";
static char *LabKey = "LabKey";

// 给noMore_bgView属性提供getter和setter方法
- (UIView *)noMore_bgView{
    return objc_getAssociatedObject(self, BgViewKey);
}
- (void)setNoMore_bgView:(UIView *)noMore_bgView{
    objc_setAssociatedObject(self, BgViewKey, noMore_bgView, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
- (UIImageView *)noMore_showImg{
    return objc_getAssociatedObject(self, ImgKey);

}
- (void)setNoMore_showImg:(UIImageView *)noMore_showImg{
    objc_setAssociatedObject(self, ImgKey, noMore_showImg, OBJC_ASSOCIATION_RETAIN_NONATOMIC);

}
- (UILabel *)noMore_showLab{
    return objc_getAssociatedObject(self, LabKey);
}
- (void)setNoMore_showLab:(UILabel *)noMore_showLab{
    objc_setAssociatedObject(self, LabKey, noMore_showLab, OBJC_ASSOCIATION_RETAIN_NONATOMIC);

}
@end

相关文章

  • 为Category添加属性

    前言 在iOS开发中,category作用十分巨大,在实际项目中,我们可以通过添加一个类的category来实现任...

  • 为Category添加属性

    1.创建UIViewController的类别并添加几个属性 2.UIViewController类别.m的实现 ...

  • Runtime为Category添加属性

    1.创建Person类 2.创建Person的类别 3.Person类别.m的实现 4.属性的使用

  • iOS内存管理-week和关联对象怎么释放(2)

    关联对象可以为category添加成员变量,因为我们虽然可以通过category为类添加属性,但是只是生成了方法声...

  • iOS中的runTime

    运行时,我们最常见的可能就是创建类别(Category),为类别添加属性,类别是不能直接添加属性的,可以添加方法,...

  • OC中分类的实现原理

    OC中为类添加一个分类(Category)可以实现为类添加对象方法、类方法、添加属性(添加的属性不生成成员变量)、...

  • runtime常用的几种使用场景:

    1.category中添加属性 category里面是没法直接添加属性的,但是通过runtime的方式可以实现。主...

  • Category 的 本质

    Category的实现原理,以及Category为什么只能添加方法不能添加属性 ?category的底层结构是st...

  • iOS用runtime给Category添加属性

    用runtime给Category添加属性 1、添加属性 (1)UIViewController+CXHelp.h...

  • iOS开发 Category

    1.说下category原理,以及category为什么只能添加方法不能添加属性? 分类的实现是将category...

网友评论

    本文标题:为Category添加属性

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