I am using an associated reference as storage for a property of my category
header file contains :
@interface UIImageView (Spinning)
@property (nonatomic, assign) BOOL animating;
@end
implementation is
- (void)setAnimating:(BOOL)value {
objc_setAssociatedObject(self, animatingKey, value, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
However, I am getting the warning for the line above
Implicit conversion of 'BOOL' (aka 'signed char') to 'id' is disallowed with ARC
if you know what I am doing wrong here, please help how to avoid this problematic
The objc_setAssociatedObject
function expects an Objective-C object for the 3rd parameter. But you are trying to pass in a non-object BOOL
value.
This is no different than trying to add a BOOL
to an NSArray
. You need to wrap the BOOL
.
Try:
objc_setAssociatedObject(self, animatingKey, [NSNumber numberWithBool:value], OBJC_ASSOCIATION_RETAIN_NONATOMIC);
Of course you will need to extract the BOOL
value from the NSNumber
when you get the associated object later.
Update: Using modern Objective-C you can do:
objc_setAssociatedObject(self, animatingKey, @(value), OBJC_ASSOCIATION_RETAIN_NONATOMIC);
void objc_setAssociatedObject(id object, void *key, id value, objc_AssociationPolicy policy)
objc_setAssociatedObject accepts id type of value as third parameter and you are trying to pass BOOL to it. So make conversion as needed.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.