我们知道 在iOS中cagetory里面只能添加方法 ,如果我们想添加属性 就要用到

<objc/runtime.h>

OBJC_EXPORT void objc_setAssociatedObject(idobject, constvoid *key, id value, objc_AssociationPolicy policy)
__OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_1);
OBJC_EXPORT id objc_getAssociatedObject(idobject, constvoid *key)
__OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_1);



例如

@interface UIButton(custom)

@property (nonatomic, copy) NSIndexPath *selectIndexPath;

@end


staticNSIndexPath *k_SelectIndexPath;


@implementation UIButton(custom)

@dynamic selectIndexPath;

- (void)setSelectIndexPath:(NSIndexPath *)selectIndexPath

{

objc_setAssociatedObject(self, &k_SelectIndexPath, selectIndexPath, OBJC_ASSOCIATION_COPY);

}


- (NSIndexPath*)selectIndexPath

{

returnobjc_getAssociatedObject(self, &k_SelectIndexPath);

}

@end