我在我的项目中使用框架,对于一个函数,它需要一个OpaquePointer!。
我设置哪个OpaquePointer以及如何设置?
下面的答案,如何设置不透明,被xcode接受,但是当你将self
或session!
放在那里时崩溃,即使你把try?
放在前面。
如果可能的话,我更喜欢Swift,否则只是在Objective-C中。
我想要使用的功能:
session?.attemptConnection(withSessionPointer: <#T##OpaquePointer!#>) //Session is a variable where I set the Usern/Passw IP and stuff like that.
我使用的框架:TOSMBClient from CocoaPods
这是Swift渲染:
- (NSError *)attemptConnectionWithSessionPointer:(smb_session *)session;
- (NSError *)attemptConnection; //This also exists in the Framework and would be ideal, but doesn't work at all. So it doesn't recognize it.
根据GitHub Docs,我根本不需要
SessionPointer
或self
应该足够,但它不起作用。关于穆罕默德·萨迪克答案:它的作用是将
self
或session
放入他的方法,但它总会崩溃。
答案 0 :(得分:0)
无论您希望传递给哪个对象,您都可以使用以下转换
UnsafeMutableRawPointer(Unmanaged.passUnretained(self).toOpaque())
以上内容会将self
转换为OpaquePointer。您可以转换自己的对象。
在您的情况下,您需要转换并传递session
。
下一点。虽然现在可能对你没用。 许多这样的函数返回指针引用。在这些情况下,您可以使用
返回let myObject = Unmanaged<ObjectClass>.fromOpaque(returnedReference!).takeUnretainedValue()