无法将类型"UnsafeMutableRawPointer!"的值分配给类型"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;

它返回地址。

我正在尝试转换为斯威夫特

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()返回 (+1( 保留对象引用(如方法名称中的"创建"所示(然后它应该是

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

为了平衡这一点,否则会出现内存泄漏。

有关更多桥接转换、帮助程序函数和链接到文档中,请参阅如何将 self 转换为 UnsafeMutablePointer 键入 swift。

相关内容

最新更新