UIButton などのタッチイベントの受け取り側で情報を受け取りたい場合が多々あると思いますが、Cocoa フレームワークで用意されている識別方法が数値型の tag となるので、モデルクラスに uniqueNumber などのプロパティをもたせる必要があり、不便だと思います。ということで tag の代わりに UIView にオブジェクト自体を渡せるようにするコードです。これなら番号を管理する必要などもなく便利だと思います。未検証ですが NSBlockOperation も渡せるかと思います。また UIView を継承したクラスであれば使えますので UIAlertView なんかにも使えます。(ARC 環境)
UIView+NSObjectProperty.h
#import <Foundation/Foundation.h>
@interface UIView (NSObjectProperty)
@property (nonatomic) id object;
@end
UIView+NSObjectProperty.m
#import "UIView+NSObjectProperty.h"
#import <objc/runtime.h>
@implementation UIView (NSObjectProperty)
- (id) object
{
return objc_getAssociatedObject(self, @selector(setObject:));
}
- (void) setObject:(id)value
{
objc_setAssociatedObject(self, _cmd, value, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
@end