我正在尝试CGRect
为我的 's 创建一个属性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}}
?