Implicit conversion of 'BOOL' (aka 'signed char') to 'id' ,objc_setAssociatedObject

ios, objective-c, objective-c-category

Solution

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);

Problem

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

Original source