Tag: swift3

Swift 3 UnsafeMutablePointer初始化C类型float **

在Swift 3中,我需要将数据发送到接受float **输入的C对象。 在Swift 2中,我曾经声明一个UnsafeMutablePointer< UnsafeMutablePointer> ,构造一个swift数组(仅用于init!),并将其传递给指针,它工作正常: var bufferOut: UnsafeMutablePointer< UnsafeMutablePointer>? arrayOut = Array(repeating: Array(repeating: 0, count: Int(size1), count: Int(size2)) bufferOut = UnsafeMutablePointer< UnsafeMutablePointer>(arrayOut) 现在Swift 3中全部破坏了! 传递C-Style float**并初始化它的最快捷的方法是什么? 在UnsafeMutablePointer< UnsafeMutablePointer>分配值的最佳方法是什么? Documentations说对于T **应该使用AutoreleasingUnsafeMutablePointer但实际上我从未设法构建一个! 请注意,我并不真正关心上面示例中的数组! 如果我可以直接使用已知容量初始化指针,我会的。 注意 : UnsafeRawPointer的预期用例部分描述了有用的情况,例如C数组和C缓冲区,但是为上述结构翻译这些方法并不明显!

在Swift中使用CFNotificationCallback,或在Swift中使用@convention(c)块

我正在尝试使用(现在私有的) CTTelephonyCenterAddObserver C函数和CFNotificationCallback回调块来侦听CoreTelephony通知。 我的桥接头(外部私有C函数): #include #if __cplusplus extern “C” { #endif #pragma mark – API /* This API is a mimic of CFNotificationCenter. */ CFNotificationCenterRef CTTelephonyCenterGetDefault(); void CTTelephonyCenterAddObserver(CFNotificationCenterRef center, const void *observer, CFNotificationCallback callBack, CFStringRef name, const void *object, CFNotificationSuspensionBehavior suspensionBehavior); void CTTelephonyCenterRemoveObserver(CFNotificationCenterRef center, const void *observer, CFStringRef name, const void *object); void CTTelephonyCenterRemoveEveryObserver(CFNotificationCenterRef center, […]

从Swift字符串转换为const char *

我正在尝试将const char *传递给从Swift中的Swift字符串转换而来的旧C库。 这是我正在调用的C函数: artnet_node artnet_new(const char *ip, int verbose) { … 如何将Swift字符串转换为此const char类型? 当我像这样传递ipAddress时,它可以工作: internal var ipAddress = “192.168.1.43” 但是当我像这样传递时,dit不起作用 internal var ipAddress:String = “192.168.1.43” 我需要在一个需要指定类型的函数中使用它: internal func setupArtnode(ip:String) -> Int{ 我尝试使用AnyObject而不是String,但这也不起作用。 谢谢。