5
votes

While converting an app to use Automatic Reference Counting I came across this error:

SCNetworkReachabilityContext context = {0, self, NULL, NULL, NULL};

Implicit conversion of an Objective-C pointer to 'void *' is disallowed with ARC

This fixes the compiler error, but gives a warning:

SCNetworkReachabilityContext context = {0, objc_unretainedPointer(self), NULL, NULL, NULL};

How to get rid of this warning?

Initializing 'void *' with an expression of type 'objc_objectptr_t' (aka 'const void *') discards qualifiers

1
Have you tried just casting it to void*? I'm not sure if that's the correct solution.jtbandes

1 Answers

7
votes

You should be able to cast self (id) to a void * without problem.

SCNetworkReachabilityContext context = {0, ( void * )self, NULL, NULL, NULL};