如何在函数中使用OpaquePointer?

时间:2017-10-26 17:49:26

标签: ios objective-c swift

我在我的项目中使用框架,对于一个函数,它需要一个OpaquePointer!。

我设置哪个OpaquePointer以及如何设置?

下面的答案,如何设置不透明,被xcode接受,但是当你将selfsession!放在那里时崩溃,即使你把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,我根本不需要SessionPointerself应该足够,但它不起作用。

     

关于穆罕默德·萨迪克答案:它的作用是将selfsession放入他的方法,但它总会崩溃。

1 个答案:

答案 0 :(得分:0)

无论您希望传递给哪个对象,您都可以使用以下转换

UnsafeMutableRawPointer(Unmanaged.passUnretained(self).toOpaque())

以上内容会将self转换为OpaquePointer。您可以转换自己的对象。 在您的情况下,您需要转换并传递session

下一点。虽然现在可能对你没用。 许多这样的函数返回指针引用。在这些情况下,您可以使用

返回
let myObject = Unmanaged<ObjectClass>.fromOpaque(returnedReference!).takeUnretainedValue()