Runtime(动态添加属性)学习

来源:互联网 发布:免费洗车软件排名 编辑:程序博客网 时间:2024/04/27 02:03

添加属性的本质就是将一个属性与一个对象关联起来(指针)。

Runtime大多是对系统类进行操作

Demo链接

//ViewController.m#import "ViewController.h"#import "NSObject+Property.h"//动态添加属性的分类@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad {    [super viewDidLoad];    //为object对象动态添加一个prop属性    NSObject *object = [[NSObject alloc] init];    object.prop      = @"prop";    NSLog(@"%@",object.prop);}
//NSObject+Property.h@interface NSObject (Property)//在类别中不能添加属性,使用@property会自动生成get、set方法声明,不生成实现,不生成属性@property NSString *prop;@end
//NSObject+Property.m#import "NSObject+Property.h"#import <objc/message.h>//引入Runtime@implementation NSObject (Property)- (void)setProp:(NSString *)prop{    /**     * 通过Runtime动态添加属性     * object 给哪个对象添加属性     * key    属性名称     * value  属性值     * policy 保存策略     */    objc_setAssociatedObject(self, @"prop", prop, OBJC_ASSOCIATION_RETAIN_NONATOMIC);}-(NSString *)prop{    return objc_getAssociatedObject(self, @"prop");}@end
0 0
原创粉丝点击