ios - 如何在函数中使用 OpaquePointer?

标签 ios objective-c swift

我在我的项目中使用一个框架,并且对于一个功能,它需要一个 OpaquePointer!。

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

下面的答案,如何设置不透明,被 xcode 接受,但是当您将 selfsession! 放入其中时,即使您将 试试?在前面。

如果可能的话,我更喜欢使用 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 or self should be enough, but it doesn't work.

Regarding Mohammad Sadiq Answer: Its works to put self or session 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/

相关文章:

iphone - UISlider 方法的值(value)?

ios - 如何在没有任何质量损失的情况下将图像设置到 UIImageView 中并获得图像的平均颜色

ios - 在 Swift 中重新加载表数据?

ios - 检查用户是否登录 ios swift

swift - 如何在没有 "Optional"的情况下从 plist 打印字符串?

ios - swift 2.2 : creating random playlist for AVAudioPlayer

iphone - Objective-c - XMLReader 无法正常工作

ios - 使用 UITableView 发出分页

iphone - 独家触控功能

ios - UIRefreshControl 与两个异步 json 下载来填充 UITableView 行和自定义标题 View