我正在尝试将 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;
它返回地址。
我正在尝试转换为斯威夫特
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