Преобразование ARC SCNetworkReachabilityContext в Objective-C

При преобразовании приложения для использования автоматического подсчета ссылок я столкнулся с этой ошибкой:

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

Неявное преобразование указателя Objective-C в void * запрещено с помощью ARC

Это исправляет ошибку компилятора, но выдает предупреждение:

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

Как избавиться от этого предупреждения?

Инициализация 'void *' выражением типа 'objc_objectptr_t' (он же 'const void *') отбрасывает квалификаторы


person logotype    schedule 22.08.2011    source источник
comment
Вы пытались просто привести его к void *? Я не уверен, что это правильное решение.   -  person jtbandes    schedule 22.08.2011


Ответы (1)


Вы должны иметь возможность без проблем преобразовать self (id) в void *.

SCNetworkReachabilityContext context = {0, ( void * )self, NULL, NULL, NULL};
person Macmade    schedule 22.08.2011
comment
Спасибо! Работал с мостовидным гипсом. (__bridge void *) сам - person logotype; 22.08.2011
comment
это не мостовой вызов, (void*)objc_unretainedPointer(self) будет более точным способом здесь. - person Joshua Weinberg; 23.08.2011
comment
Кто-то ARCified пример доступности Apple здесь. gist.github.com/1182373 - person Gaurang Jadia; 15.02.2012