GVKun编程网logo

Swift 2-UnsafeMutablePointer 反对(swift observable)

5

在本文中,我们将给您介绍关于Swift2-UnsafeMutablePointer反对的详细内容,并且为您解答swiftobservable的相关问题,此外,我们还将为您提供关于AcerSwift3笔

在本文中,我们将给您介绍关于Swift 2-UnsafeMutablePointer 反对的详细内容,并且为您解答swift observable的相关问题,此外,我们还将为您提供关于Acer Swift 3笔记本怎么样 Acer Swift 3笔记本上手图赏、Chris Lattner 对 Swift 3 的总结与对 Swift 4 的展望、Emoji 上的 Swift:换一种视角来理解 Swift 高阶函数、ios – Swift 3发布后,Swift 2应用程序是否可以运行?的知识。

本文目录一览:

Swift 2-UnsafeMutablePointer 反对(swift observable)

Swift 2-UnsafeMutablePointer 反对(swift observable)

如果我有类似的方法:

func someMethod(contextPtr: UnsafeMutablePointer<Void>)

我如何从中获取对象contextPtr

func someMethod(contextPtr: UnsafeMutablePointer<Void>){        let object:MyObject = contextPtr.memory}

给出:

“无效”不能转换为“ MyObject”

秘诀是什么


更多详情:

我实际上在这里正在为以下操作设置全局回调函数SCNetworkReachability

func callback(reachability:SCNetworkReachability, flags: SCNetworkReachabilityFlags, info: UnsafeMutablePointer<Void>) {    let r:Reachability = info.memory}

然后添加回调,如下所示:

var context = SCNetworkReachabilityContext(version: 0, info: nil, retain: nil, release: nil, copyDescription: nil)var s = selfwithUnsafeMutablePointer(&s) {    context.info = UnsafeMutablePointer($0)}SCNetworkReachabilitySetCallback(reachability, callback, &context)

答案1

小编典典

这应该起作用:将对象指针作为不透明的非托管指针传递给回调:

context.info = UnsafeMutablePointer(Unmanaged.passUnretained(myObject).toOpaque())SCNetworkReachabilitySetCallback(reachability, callback, &context)

并通过以下方式检索回调:

func callback(reachability:SCNetworkReachability, flags: SCNetworkReachabilityFlags, info: UnsafeMutablePointer<Void>) {    let myObject = Unmanaged<MyObject>.fromOpaque(COpaquePointer(info)).takeUnretainedValue()}

当然,这假定只要安装了回调,就存在对该对象的某些强引用,因此不会释放该对象。

更新: 请注意,如果您愿意使用“不安全”功能,则可以简化从对象指针到void指针以及返回的转换:

context.info = unsafeAddressOf(myObject)// ...myObject = unsafeBitCast(info, MyObject.self)

据我所知,生成的汇编代码是相同的。

更新2: 另请参阅如何快速将自身转换为UnsafeMutablePointer
<Void>类型,以获取有关“桥接”和此处可以使用的一些辅助函数的更多信息。


Swift 3更新(Xcode 8 beta 6):

var context = SCNetworkReachabilityContext(version: 0, info: nil, retain: nil, release: nil, copyDescription: nil)context.info = UnsafeMutableRawPointer(Unmanaged.passUnretained(self).toOpaque())// ...func callback(reachability:SCNetworkReachability, flags: SCNetworkReachabilityFlags, info: UnsafeMutableRawPointer?) {    if let info = info {        let myObject = Unmanaged<MyObject>.fromOpaque(info).takeUnretainedValue()        // ...    }}

Acer Swift 3笔记本怎么样 Acer Swift 3笔记本上手图赏

Acer Swift 3笔记本怎么样 Acer Swift 3笔记本上手图赏

Acer Swift 3是宏碁推出的笔记本电脑,具有轻薄时尚等元素,这里为大家带来 Acer Swift 3笔记本上手图赏 ,一起来看看。

14英寸1920*1080的显示屏幕、2.5GHz的英特尔酷睿酷睿i3、i5-7200u/i7处理器、图形128mb英特尔高清显卡620、8GB/256GB的SSD、Windows Hello、指纹识别器,处理速度快可媲美MacBook,售价仅为1398美元(约£1090/1760美元),性价比方面还是不错的。

以上就是 Acer Swift 3笔记本上手图赏 相关内容,希望对你有帮助。

Chris Lattner 对 Swift 3 的总结与对 Swift 4 的展望

Chris Lattner 对 Swift 3 的总结与对 Swift 4 的展望

总结

以上是小编为你收集整理的Chris Lattner 对 Swift 3 的总结与对 Swift 4 的展望全部内容。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。

Emoji 上的 Swift:换一种视角来理解 Swift 高阶函数

Emoji 上的 Swift:换一种视角来理解 Swift 高阶函数

总结

以上是小编为你收集整理的Emoji 上的 Swift:换一种视角来理解 Swift 高阶函数全部内容。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。

ios – Swift 3发布后,Swift 2应用程序是否可以运行?

ios – Swift 3发布后,Swift 2应用程序是否可以运行?

我发布了几个用 Swift 2.0和2.1编写的应用程序.现在Apple刚开源Swift并宣布Swift 3.0将于明年发布.在Swift 3.0发布后,我的应用程序仍然有用吗?

解决方法

我想你在这里问两个不同的问题.

>当Swift 3推出时,您的应用程序是否会在新操作系统上执行?
>推出时,您的应用会在新操作系统上运行吗?

关于第一个问题,是的,你的应用程序将执行,即使它是针对Swift 2编译的.Swift应用程序在其捆绑包中嵌入了Swift运行时库,因此您在这方面是安全的.您会注意到Swift捆绑包总是比Objective-C对应物大4-5 MB,这正是原因所在.

关于第二个问题,与任何新的操作系统版本一样,无法保证您的应用程序能够像以前版本的操作系统那样工作.虽然根据我的经验,Apple在过去的几个OS版本中做了相当不错的工作,尽管你的里程可能会有所不同.

今天关于Swift 2-UnsafeMutablePointer 反对swift observable的讲解已经结束,谢谢您的阅读,如果想了解更多关于Acer Swift 3笔记本怎么样 Acer Swift 3笔记本上手图赏、Chris Lattner 对 Swift 3 的总结与对 Swift 4 的展望、Emoji 上的 Swift:换一种视角来理解 Swift 高阶函数、ios – Swift 3发布后,Swift 2应用程序是否可以运行?的相关知识,请在本站搜索。

本文标签: