Я пытаюсь создать свойство 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, но я не вытаскиваю ее правильно. Как я могу исправить мой геттер?
P.S. Вот как я объявляю свое свойство в заголовочном файле моей категории:
@property (nonatomic, assign) CGRect tapArea;
Кроме того, как я могу установить свое свойство равным рамке кнопки по умолчанию вместо {{0, 0}, {0, 0}}
?
CGRectFromString()
, но, похоже, не могу заставить его работать, не вызывая встроенной ошибки. - person KingPolygon   schedule 08.02.2015