var zeroAddress = sockaddr_in(sin_len: 0,sin_family: 0,sin_port: 0,sin_addr: in_addr(s_addr: 0),sin_zero: (0,0))zeroAddress.sin_len = UInt8(sizeofValue(zeroAddress))zeroAddress.sin_family = sa_family_t(AF_INET)let defaultRouteReachability = withUnsafePointer(&zeroAddress){ SCNetworkReachabilityCreateWithAddress(nil,UnsafePointer(withUnsafePointer(&zeroAddress) {(pointer: UnsafePointer<sockaddr_in>) -> sockaddr_in in SCNetworkReachabilityCreateWithAddress(nil,pointer).takeRetainedValue()})).takeRetainedValue()}
但是现在用Swift 2,我得到一个错误的说法
Cannot invoke ‘withUnsafePointer’ with an argument List of type ‘(inout sockaddr_in,(_) -> _)’
我看了Xcode的用法,这是:
所以我试过使用
withUnsafePointer(&zeroAddress) {(pointer: UnsafePointer<sockaddr_in>) -> AnyObject in SCNetworkReachabilityCreateWithAddress(nil,pointer).takeRetainedValue()}
以及
var zeroAddress = sockaddr_in()zeroAddress.sin_len = UInt8(sizeofValue(zeroAddress))zeroAddress.sin_family = sa_family_t(AF_INET)let defaultRouteReachability = withUnsafePointer(&zeroAddress) { SCNetworkReachabilityCreateWithAddress(nil,UnsafePointer())}
而且他们都给了一个无法调用的编译时错误。与Swift 2.x中的防火墙指针一起使用的正确方法是什么?
错误信息是误导的,问题在于SCNetworkReachabilityCreateWithAddress()不返回
不受管理的对象,所以你不能打电话
takeRetainedValue():
还要注意,简化了C structs的创建,如struct sockaddr_in推出了Swift 1.2(如果我记得正确的话)。
总结以上是内存溢出为你收集整理的与Swift 2中的防火墙指针全部内容,希望文章能够帮你解决与Swift 2中的防火墙指针所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)