jjzjj

UnsafePointer

全部标签

arrays - 如何在函数中将 swift 数组作为 UnsafePointer<T> 参数传递

我读到,为了将swift变量/常量传递给期望UnsafePointer的参数,可以通过使用变量/常量前缀的“inout”(&符号)符号来完成。所以在下面的代码中,我想将“颜色”数组作为“UnsafePointer”传递给函数CGGradientCreateWithColorComponents(),但是我得到了一个编译器错误:“&与UnsafePointer类型的非输入输出参数一起使用”视觉效果见下图。所以,问题是,如何将swift数组“colors”转换为UnsafePointer?谢谢 最佳答案 将颜色类型显式更改为[CGFlo

swift - 在 swift 中转换和强制指针有什么区别?

动机是尝试使用带有CAPI的回调,在其中我通过void指针传入任何我想要的东西。假设我有一个x:UnsafePointer.我知道它真正是什么,所以我想适本地转换指针。使用unsafeBitCast或仅将UnsafePointer应用于x有什么区别?也就是说是lety=unsafeBitCast(x,to:UnsafePointer.self)不同于letz=UnsafePointer(x)某种程度上? 最佳答案 unsafeBitCast是任何两种大小相同的Swift类型之间的不安全转换。即可以写unsafeBitCast(x,U

swift - 如何通过引用将 UnsafePointer<UInt8> 传递给 C API?

我写了一些Swift2.2代码来与OpenSSL交互CAPI,现在我正在尝试将其转换为Swift3。在swift2中letoctets=pkcs7_d_data(pkcs7_d_sign(receiptPKCS7).memory.contents)varptr=UnsafePointer(octets.memory.data)//nowpasspointerbyreferenceASN1_get_object(&ptr,&length,&type,&xclass,end-ptr)在Swift3中,我不得不做一些改变//useguardsoidonthavetoconstantlyunw

objective-c - 如何从 Swift 中的 void UnsafePointer 中提取数据?

我在Objective-C(使用AudioToolbox框架)中有以下代码,我试图将其转换为Swift:MusicTimeStamptimeStamp;MusicEventTypeeventType;constvoid*eventData;UInt32eventDataSize;//MusicEventIteratorGetEventInfoisdeclaredinAudioToolboxframeworkasthis://OSStatusMusicEventIteratorGetEventInfo(MusicEventIteratorinIterator,MusicTimeStamp

ios - Swift 3 - 使用 UnsafePointer<CFDictionary>?

我目前正在阅读ChrisAdamson的“LearningCoreAudio”并尝试在Swift3(而不是Objective-C)中跟进。第一个代码示例使用了AudioTool收集有关音频文件的信息。我的Swift3版本如下所示:importFoundationimportAudioToolboxfuncmain(){letarguments=CommandLine.argumentsguardarguments.count>1else{print("Usage:CAMetaData/full/path/to/audiofile")return}//Getfilepathoutofcm

swift - 从 String 到 UnsafePointer<Int8> 的最佳转换是什么?

要将String转换为UnsafePointer,我使用这个:vartail=(""asNSString).utf8String但是有没有什么方法可以不用NSString强制转换呢?我在C-library方法中使用UnsafePointer。 最佳答案 有专门的方法可以做到这一点:.withCString(_:):yourString.withCString{pointerin//workwiththepointerreturnresult}或者,如果您希望将其作为属性(property),则有.utf8CString:vartai

swift - 将 nil 作为 UnsafePointer<UInt8> 传递

在Swift2.2中,我能够传入nil作为需要UnsafePointer的函数的有效参数.在Swift3中,我不能再这样做了:funcmyFuncThatTakesAPointer(buffer:UnsafePointer,length:Int){/****/}myFuncThatTakesAPointer(buffer:nil,length:0)Playgroundexecutionfailed:error:Xcode8Playground-iOS.playground:62:33:error:nilisnotcompatiblewithexpectedargumenttype'Un

swift - 为什么 Swift 在将可选字符串转换为 UnsafePointer 时会返回意外指针?

在使用将字符串作为const char *的C库工作时,我注意到一些异常行为(转换为Swift为UnsafePointer!);通过String按预期工作,但是String?似乎破坏了输入。考虑我写的测试:functest(_input:UnsafePointer?){ifletstring=input{print(string[0],string[1],string[2],string[3],string[4],string[5])}else{print("nil")}}letinput:String="Hello"test(input)这按预期工作,为输入字符串打印一个以空字符结尾

swift - 将 Swift 字符串数组转换为 C 字符串数组指针

我在使用Swift3,我需要与CAPI交互,例如,它接受以NULL结尾的字符串列表constchar*cmd[]={"name1","value1",NULL};command(cmd);在Swift中,API的导入方式如下funccommand(_args:UnsafeMutablePointer?>!)在使用类型转换或unsafeAddress(of:)尝试了数百次之后,我仍然无法完成这项工作。即使我传递了一个通过编译的有效指针,它也会在运行时崩溃,提示内存访问无效(在strlen函数中)。还是与ARC有关?letarray=["name1","value1",nil]//???/

pointers - Swift 使用 UnsafePointer<String> 从 UnsafeMutablePointer<Void> 获取值

我正在尝试通过contextInfo类型UnsafeMutablePointer至UISaveVideoAtPathToSavedPhotosAlbum并在回调函数中使用它。由于某种原因,我无法访问contextInfo作为字符串使用UnsafePointer(x).memory当我在回调函数中时。我很确定这是我所缺少的简单东西,但我花了很多时间试图弄清楚。下面是我试过的一些代码。以下代码有效。vartestStr:String="hello"takesAMutableVoidPointer(&testStr)functakesAMutableVoidPointer(x:UnsafeM