如何解决如何获得指向字符串的持久指针?
我发现了String
's generic instance method withCString(_:)
,但是我需要获取指向多个字符串的指针,并且不想有一堆嵌套的闭包。例如,假设str1
和str2
都是String
实例,foo
和bar
都是C结构类型,而do_something
是C函数。那我该怎么做?
let ptr1 = str1.pointerThatPersistsEvenAfterPassedToFunction
let ptr2 = str2.pointerThatPersistsEvenAfterPassedToFunction
let c_struct1 = foo(ptr1,1,2)
let c_struct2 = bar(ptr2,3,c_struct1)
do_something(c_struct1,c_struct2)
str1.invalidatePersistentPointer
str2.invalidatePersistentPointer
解决方法
如果不使用String
,则无法安全地访问Swift withCString
的基础缓冲区。
因此,您可以使用嵌套的闭包(这是使用CString
的最安全,最正确的方法),也可以使用UnsafeMutablePointer<CChar>
自己分配和管理CString
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。