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

Cannot assign value of type 'UnsafeMutableRawPointer!' to type 'UIView'

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

在Objective-C下面的代码

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

其中 myViewUIView

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

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

它return地址。

我正在尝试转换为 Swift

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

smartPlayerCreatePlayView - Automatically convert to small letter

得到错误:- Cannot assign value of type 'UnsafeMutableRawPointer!' to type 'UIView'

如何解决这个问题。

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

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

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

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

平衡一下,否则会发生内存泄漏。

更多桥接转换、辅助函数和链接 有关文档,请参阅