4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[Objective-C] カテゴリーで UIView に NSObject を設定する

Posted at

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
4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?