gpt4 book ai didi

ios - 无法将类型 'UnsafeMutableRawPointer!' 的值分配给类型 'UIView'

转载 作者:行者123 更新时间:2023-11-28 15:06:44 25 4
gpt4 key购买 nike

我正在尝试将 Objective-C 源代码转换为 Swift。

在 Objective-C 中,下面的代码

myView = (__bridge UIView *)([SmartPlayerSDK SmartPlayerCreatePlayView:0 y:0 width:screenWidth height:playerHeight]);

其中 myView 是一个 UIView

我正在使用下面给出函数的库,

+ (void*)SmartPlayerCreatePlayView:(NSInteger)x y:(NSInteger)y width:(NSInteger)width height:(NSInteger)height;

它返回地址。

我正在尝试转换为 Swift

myView = SmartPlayerSDK.smartPlayerCreatePlayView(0, y: 0, width: 10, height: 10)

smartPlayerCreatePlayView - Automatically convert to small letter

出现错误:- 无法分配“UnsafeMutableRawPointer!”类型的值输入“UIView”

如何解决这个问题。

最佳答案

原始指针和托管对象指针之间的桥接完成在 Swift 中使用 Unmanaged 类型。在你的情况下相当于代码将是

let rawPointer = SmartPlayerSDK.smartPlayerCreatePlayView(0, y: 0, width: 10, height: 10)
let view = Unmanaged<UIView>.fromOpaque(rawPointer).takeUnretainedValue()

如果 smartPlayerCreatePlayView() 返回一个 (+1) 保留对象引用(如方法名称中的“Create”所示)然后它应该是

let view = Unmanaged<UIView>.fromOpaque(rawPointer).takeRetainedValue()

要平衡它,否则会发生内存泄漏。

更多桥接转换、辅助函数和链接有关文档,请参阅 How to cast self to UnsafeMutablePointer<Void> type in swift .

关于ios - 无法将类型 'UnsafeMutableRawPointer!' 的值分配给类型 'UIView',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48337257/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com