首页投稿(暂停使用,暂停投稿)

【iOS开发】Runtime关联对象

2017-09-26  本文已影响11人  Huangbaoqin

众所周知,Category 是不能添加成员变量的,倒是可以添加属性,不过不会自动生成 getter 和 setter 方法,也不能生成对应的成员变量。

#import <Foundation/Foundation.h>

@interface NSArray (name)

@property (nonatomic, copy) NSString *name;

@end
#import "NSArray+name.h"
#import <objc/runtime.h>

@implementation NSArray (name)

static const char *key = "name";

- (NSString *)name {
    return objc_getAssociatedObject(self, key);
}

- (void)setName:(NSString *)name {
    objc_setAssociatedObject(self, key, name, OBJC_ASSOCIATION_COPY_NONATOMIC);
}

@end
- (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
    NSArray *array = @[@1, @2, @3];
    array.name = @"HBQ";
    NSLog(@"array.name = %@", array.name);
}
上一篇下一篇

猜你喜欢

热点阅读