我正在尝试将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
收到错误: - Cannot assign value of type 'UnsafeMutableRawPointer!' to type 'UIView'
如何解决此问题。
答案 0 :(得分:1)
完成原始指针和托管对象指针之间的桥接
在Swift中使用Unmanaged
类型。在你的情况下等效
代码将是
let rawPointer = SmartPlayerSDK.smartPlayerCreatePlayView(0, y: 0, width: 10, height: 10)
let view = Unmanaged<UIView>.fromOpaque(rawPointer).takeUnretainedValue()
如果smartPlayerCreatePlayView()
返回(+1)保留的对象
引用(作为&#34;创建&#34;在方法名称中指示)然后它
应该是
let view = Unmanaged<UIView>.fromOpaque(rawPointer).takeRetainedValue()
要平衡,否则你会有内存泄漏。
用于更多桥接转换,帮助程序功能和链接 在文档中,请参阅How to cast self to UnsafeMutablePointer<Void> type in swift。