前言
基本上是搬運過來的
正文
.h文件
#import <Foundation/Foundation.h>
@interface NSObject (test)
@property (nonatomic,copy) NSString *name;
@end
.m文件
#import "NSObject+test.h"
#import <objc/runtime.h>//不引用無法使用objc_getAssociatedObject
@implementation NSObject (test)
// 定義關(guān)聯(lián)的key
static const char *key = "name";
- (NSString *)name
{
// 根據(jù)關(guān)聯(lián)的key茴厉,獲取關(guān)聯(lián)的值泽台。
return objc_getAssociatedObject(self, key);
}
- (void)setName:(NSString *)name
{
// 第一個參數(shù):給哪個對象添加關(guān)聯(lián)
// 第二個參數(shù):關(guān)聯(lián)的key,通過這個key獲取
// 第三個參數(shù):關(guān)聯(lián)的value
// 第四個參數(shù):關(guān)聯(lián)的策略
objc_setAssociatedObject(self, key, name, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
@end
測試
#import "card.h"
#import "NSObject+test.h"
@implementation card
- (void)test
{
self.name = @"2222";
}
@end
運行并未報錯呀忧,card有name屬性师痕,表示category生效。