草庐IT

Unsafepointer

全部标签

ios - 无法为类型 Unsafepointer Swift 3.0 转换初始化变量

您好,我正在将现有的swift2.0代码转换为swift3.0,但在转换时遇到错误:Cannotinvokeinitializerfortype'UnsafePointer'withanargumentlistoftype'(UnsafeRawPointer)'这是我的代码:extensionData{varhexString:String{letbuf=UnsafePointer(bytes)//hereistheerrorletcharA=UInt8(UnicodeScalar("a").value)letchar0=UInt8(UnicodeScalar("0").value)f

ios - 如何将数组 `UnsafePointer<DSPComplex>` 转换为 float 数组?

如何转换数组UnsafePointer到Swift中的一组float?我看过thispage,但是因为我是swift的新手,所以我不知道如何为一组float做这件事。 最佳答案 DSPComplex是一个包含虚数和实数Float值的结构。那是两个花车。它不能转换为float数组。但是,您必须先将其转换为UnsafeBufferPointer,然后才能将其传递给数组。然后你就有了一个DSPComplex结构的Swift数组。funcarrayForDSPComplex(pointer:UnsafePointer,count:Int)-

ios - 无法使用 (UnsafeMutableRawPointer) 类型的参数列表调用类型 UnsafePointer<_> 的初始值设定项

当我从音频缓冲区数据写入多点连接中的输出流时出现错误CannotinvokeinitializerfortypeUnsafePointerwithanargumentlistoftype(UnsafeMutableRawPointer)我找到了很多解决方案,但这个解决方案对我没有帮助。我的代码是:funcsend(_buffer:AudioBuffer){print(buffer.mData!)print(buffer.mDataByteSize)outputStreme?.write(UnsafePointer(buffer.mData),maxLength:buffer.mData

swift - 在没有 unsafeBitCast 的情况下将 UnsafeMutablePointer 值分配给 UnsafePointer

我正在使用一个CAPI,该API定义了一个包含constchar*的结构和一个返回char*的函数,我正在尝试找到执行赋值的最佳方法。有没有办法不使用unsafeBitCast来做到这一点?如果我不进行转换,则会出现此错误:Cannotassignvalueoftype'UnsafeMutablePointer'(aka'UnsafeMutablePointer')totype'UnsafePointer!'(aka'ImplicitlyUnwrappedOptional>')此外,下面使用pair()的pairPtr初始化是否会在堆栈上分配一对结构以初始化堆上分配的对,因为对于结构必

快速桥接 2D 数组以键入 UnsafePointer<UnsafeMutablePointer<Double>?>?

您好,我正在尝试使用Swift4包装一个CapiSwift已导入具有以下签名的函数。publictypealiasindicator=@convention(c)(Int32,UnsafePointer?>?,UnsafePointer?,UnsafePointer?>?)->Int32根据C库文档,签名如下:intindicator(intsize,doubleconst*const*inputs,doubleconst*options,double*const*outputs);值得注意的是int从函数返回是c风格的函数的错误类型,实际返回是outputs指针然后假设我创建了以下S

swift - 我是否需要释放一个 UnsafeBufferPointer 或在缓冲区指针的起始内存位置使用的 UnsafePointer?

考虑thisextension在将NSData对象序列化为十六进制字符串的NSData上:extensionNSData{funcbase16EncodedString(uppercaseuppercase:Bool=false)->String{letbuffer=UnsafeBufferPointer(start:UnsafePointer(self.bytes),count:self.length)lethexFormat=uppercase?"X":"x"letformatString="%02\(hexFormat)"letbytesAsHexStrings=buffer.m

ios - Swift 自引用类属性

我正在尝试快速创建一个自引用类属性,但我不明白为什么这不起作用。我真的只是想将其用作dispatch_set_specific的键来管理私有(private)调度队列。classSomeClass{varptr:UnsafePointer=nilinit(){withUnsafePointer(&ptr,{self.ptr=$0})}} 最佳答案 闭包内$0是指向ptr的指针因此有类型UnsafePointer>.您需要将其转换为ptr的类型:withUnsafePointer(&ptr,{self.ptr=UnsafePointe

swift - 在 Swift 中,下标产生(或接收)非对象类型的语义是什么?

Swift书中并没有清楚地记载非对象类型结合下标的语义。最明显的例子是一个字典,它的值类型是一个数组:数组是一个结构。因此,当下标返回它时,我们应该期望它被复制。然而,这非常不方便。幸运的是,情况似乎也并非如此——至少在Xcode8.2.1(Swift3.1?)中并非如此。考虑这些例子:vara:[Int]=[0]//[0]varb=a//[0]b.append(1)b//[0,1]a//[0]如我们所料,数组a在分配给b时被复制。相比之下,varh:[Int:[Int]]=[0:[0]]//[0:[0]]h[0]!.append(1)h[0]//[0,1]如果下标只是使用普通语义返回

ios - 如何将 UnsafePointer 映射到另一种类型?

我正在尝试转换UnsafePointer到UnsafePointer到目前为止,我以这个解决方案结束:letbufferSize=1024letbuffer:UnsafePointer=....lettmp=UnsafeBufferPointer(start:buffer,count:bufferSize).map(Float.init)letconverted:UnsafePointer=UnsafePointer(tmp)它有效,但我觉得这不是一种有效的方法,因为我正在创建一个中间体Array...有更好的方法吗? 最佳答案 您

ios - 将 ObjC 转换为 Swift - UnsafePointer<Void> 不可转换为结构类型

我正在学习用objective-c编写的教程here并且我已经将大部分内容转换为swift,但是有些行就是行不通。例如,我转换了以下结构:typedefstruct{MessageTypemessageType;}Message;typedefstruct{Messagemessage;}MessageMove;为此:structMessage{varmessageType:MessageType}structMessageMove{varmessage:Message}在另一行中,本教程执行以下操作:-(void)match:(GKMatch*)matchdidReceiveData