我在我的项目中使用一个框架,并且对于一个功能,它需要一个 OpaquePointer!。
我应该设置哪个 OpaquePointer 以及如何设置?
下面的答案,如何设置不透明,被 xcode 接受,但是当您将 self
或 session!
放入其中时,即使您将 试试?
在前面。
如果可能的话,我更喜欢使用 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.
According to the GitHub Docs, I don't need a
SessionPointer
at all orself
should be enough, but it doesn't work.Regarding Mohammad Sadiq Answer: Its works to put
self
orsession
in with his method, but it will always crash.
最佳答案
无论您想传递给函数什么对象,都可以使用以下转换
UnsafeMutableRawPointer(Unmanaged.passUnretained(self).toOpaque())
上面的代码会将 self
转换为 OpaquePointer。您可以转换自己的对象。
在您的情况下,您需要转换并传递 session
。
下一点。虽然现在可能对你没用。 许多这样的函数返回指针引用。在这些情况下,您可以使用
检索let myObject = Unmanaged<ObjectClass>.fromOpaque(returnedReference!).takeUnretainedValue()
关于ios - 如何在函数中使用 OpaquePointer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46960747/