category添加属性

// key作为该对象实例的属性的键,而value就是对象实例的属性的值
// associative是在运行时动态的添加属性

UIView+AddProperty.h

import <UIKit/UIKit.h>

@interface UIView (AddProperty)
@property(nonatomic,copy)NSString *title;
@end

UIView+AddProperty.m

import "UIView+AddProperty.h"

import <objc/runtime.h>

@implementation UIView (AddProperty)
static void *MyKey = (void *)@"son";
// Obj-c中的外联方法
// OBJC_EXPORT id objc_getAssociatedObject(id object, const void *key)
// OBJC_EXPORT void objc_setAssociatedObject(id object, const void *key, id value, objc_AssociationPolicy policy)
-(NSString *)title
{
return objc_getAssociatedObject(self, MyKey);
}

-(void)setTitle:(NSString *)title
{
objc_setAssociatedObject(self, MyKey, title, OBJC_ASSOCIATION_COPY);
}
@end

//调用

import "UIView+AddProperty.h"

import <objc/runtime.h>

@interface ViewController ()
@end
@implementation ViewController

  • (void)viewDidLoad {
    [super viewDidLoad];
    UIView *view = [[UIView alloc] initWithFrame:CGRectMake(100, 150, 100, 100)];
    view.backgroundColor = [UIColor redColor];
    [self.view addSubview:view];
    view.title = @"哈喽 json category 添加属性";
    NSLog(@"%@",view.title);
    // category添加属性[16959:1926914] 哈喽 json category 添加属性
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容