static void *strKey = &strKey;
@implementation ClassName (CategoryName) -(void)setStr:(NSString *)str { objc_setAssociatedObject(self, & strKey, str, OBJC_ASSOCIATION_COPY); }
-(NSString *)str { return objc_getAssociatedObject(self, &strKey); } @end


这里要注意objc_setAssociatedObject里传的参数,枚举值等等有的时候是copy有的时候是strong或者retain