CGRectのプロパティを関連付けられたオブジェクトとして作成しようとしているUIButtonので、このためだけにサブクラス化する必要はありませんUIButton。
基本的に、というタイトルのプロパティを追加していますが、tapArea作成に問題があります。これは私がこれまでに持っているものです:
@dynamic tapArea;
- (void)setTapArea:(CGRect)tapArea {
objc_setAssociatedObject(self, @selector(tapArea), [NSValue valueWithCGRect:tapArea], OBJC_ASSOCIATION_ASSIGN);
}
- (CGRect)tapArea {
return [objc_getAssociatedObject(self, @selector(tapArea)) CGRectValue];
}
私NSLogが言うdogButton.tapAreaと、ロガー{{0,0},{0,0}}は理にかなっています。設定しようとすると問題が発生します。次のクラッシュが発生します。
-[__NSCFString CGRectValue]: unrecognized selector sent to instance 0x14e65e80
NSValue を使用しているため、このエラーが発生していると思いますが、正しく引き戻していません。ゲッターを修正するにはどうすればよいですか?
PSこれは、カテゴリヘッダーファイルでプロパティを宣言する方法です:
@property (nonatomic, assign) CGRect tapArea;
また、プロパティをデフォルトではなくボタンのフレームに等しく設定するにはどうすればよい{{0, 0}, {0, 0}}ですか?