Advertisement

Assigning to ‘id<>‘ from incompatible type ‘ViewController *const __strong’

Annoying warning caused in the normal creation of a delegate pattern in iOS. 

The standard approach of using

dot.delegate = self;

in the parent, generated the warning message:

Assigning to ‘id<ZoneDotDelegate>’ from incompatible type ‘ViewController *const __strong’.

This delegate had been @property (assigned) id <ZoneDotDelegate> delegate; in the .h file.

I tried lots of things including changing the @property definition, to no avail. Then I stumbled onto resolving the warning with this solution:

dot.delegate = (id <ZoneDotDelegate>)self;
which, I think, is described as a ‘casting’ of the ViewController instance as the delegate.