Objective-C SCNetworkReachabilityContext ARC转换

log*_*ype 5 iphone objective-c ipad automatic-ref-counting

在将应用转换为使用自动引用计数时,我遇到了以下错误:

SCNetworkReachabilityContext context = {0, self, NULL, NULL, NULL};
Run Code Online (Sandbox Code Playgroud)

使用ARC不允许将Objective-C指针隐式转换为'void*'

这可以修复编译器错误,但会发出警告:

SCNetworkReachabilityContext context = {0, objc_unretainedPointer(self), NULL, NULL, NULL};
Run Code Online (Sandbox Code Playgroud)

如何摆脱这种警告?

使用类型'objc_objectptr_t'(又名'const void*')的表达式初始化'void*'会丢弃限定符

Mac*_*ade 7

您应该能够将self(id)转换为void*而不会出现问题.

SCNetworkReachabilityContext context = {0, ( void * )self, NULL, NULL, NULL};
Run Code Online (Sandbox Code Playgroud)

  • 谢谢!与桥接演员合作.(__bridge void*)自我 (4认同)
  • 这不是桥接调用,(void*)objc_unretainedPointer(self)将是更准确的方式. (4认同)