1.分类中不能添加实例变量,但可以通过关联引用添加键值数据
@interface Person:NSObject
@property (nonatomic, readwrite, copy) NSString *name;
@end
#import <objc/runtime.h>
@interface Person(EmailAddress)
@property (nonatomic, readwrite, copy) NSString *emailAddress;
@end
@implemention Person(EmailAddress)
static char emailAddressKey;
-(NSString *)emailAddress{
return objc_getAssociatedObject(self, &emailAddressKey);
}
-(void)setEmailAddress:(NSString *)emailAddress{
objc_setAssociatedObject(self, &emailAddressKey, emailAddress, OBJC_ASSOCIATION_COPY);
}
@end
2.关联引用是基于键(emailAddressKey)的储存地址而不是值