大佬教程收集整理的这篇文章主要介绍了ios – Xcode 10 Swift构建错误:“将非转义值转换为’T’可能允许它逃脱”,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
typealias MyPathApplier = @convention(block) (UnsafePointer<CGPatHelement>) -> Void // Note: You must declare MyPathApplier as @convention(block),because // if you don't,you get "Fatal error: can't unsafeBitCast between // types of different sizes" at runtime,on Mac OS X at least. private func myPathApply(_ path: CGPath!,block: MyPathApplier) { let callBACk: @convention(C) (UnsafeMutableRawPointer,UnsafePointer<CGPatHelement>) -> Void = { (info,element) in let block = unsafeBitCast(info,to: MyPathApplier.self) block(element) } path.apply(info: unsafeBitCast(block,to: UnsafeMutableRawPointer.self),function: unsafeBitCast(callBACk,to: CGPathApplierFunction.self)) }
错误发生在最后一行,path.apply,突出显示第一个unsafeBitCast:
将非转义值转换为“T”可能允许它转义
我不知道如何修改此代码以删除错误,或者如果这是Xcode 10的问题.它应该能够编译Xcode 3.2代码..甚至将代码库更新为Xcode 9中的Swift 4,它仍然有同样的问题.
编辑:用@Vyacheslav的答案改变它允许它编译,但它得到一个运行时错误:
“致命错误:不能在不同大小的类型之间使用unsafeBitCast”
上面的示例中提供了一条评论,我没有在上面的示例中包含:
// Note: You must declare MyPathApplier as @convention(block),on Mac OS X at least.
以上是大佬教程为你收集整理的ios – Xcode 10 Swift构建错误:“将非转义值转换为’T’可能允许它逃脱”全部内容,希望文章能够帮你解决ios – Xcode 10 Swift构建错误:“将非转义值转换为’T’可能允许它逃脱”所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。