眾所周知跷车,Category 是不能添加成員變量的担映,倒是可以添加屬性嘱蛋,不過不會自動生成 getter 和 setter 方法,也不能生成對應的成員變量媒抠。
- 使用 Runtime 中的關(guān)聯(lián)對象為 Category 添加屬性
#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);
}