Objective c 使用指针访问Swift/Obj-c到Swift转换中的指针
我试图在Swift中执行以下操作:Objective c 使用指针访问Swift/Obj-c到Swift转换中的指针,objective-c,swift,Objective C,Swift,我试图在Swift中执行以下操作: CFArrayRef attachmentsArray = CMSampleBufferGetSampleAttachmentsArray(sampleBuffer, 0); if (CFArrayGetCount(attachmentsArray)) { CFBooleanRef notSync; CFDictionaryRef dict = CFArrayGetValueAtIndex(attachmentsArra
CFArrayRef attachmentsArray = CMSampleBufferGetSampleAttachmentsArray(sampleBuffer, 0);
if (CFArrayGetCount(attachmentsArray)) {
CFBooleanRef notSync;
CFDictionaryRef dict = CFArrayGetValueAtIndex(attachmentsArray, 0);
BOOL keyExists = CFDictionaryGetValueIfPresent(dict,
kCMSampleAttachmentKey_NotSync,
(const void **)¬Sync);
我有:
if CFArrayGetCount(attachmentsArray) != 0 {
let dict = CFArrayGetValueAtIndex(attachmentsArray, 0)
然而,dict是一个不安全的指针,而不是它应该是的字典。当我打印附件时,我得到了
可选({DependsOnOthers=0;})
我尝试将其强制转换为CFDictionaryRef,但在运行时失败。
如何在Swift中成功执行上述Obj-C代码
然而,dict是一个不安全的指针,而不是它应该是的字典
不,不是“应该这样”。看看宣言:
func CFArrayGetValueAtIndex(theArray: CFArray!, _ idx: CFIndex)
-> UnsafePointer<Void>
func CFArrayGetValueAtIndex(数组:CFArray!,ux:CFIndex)
->不安全指针
它返回一个指向void的UnsafePointer,因为它应该这样做。(在Objective-C中,它返回一个常量void*
)
然而,dict是一个不安全的指针,而不是它应该是的字典
不,不是“应该这样”。看看宣言:
func CFArrayGetValueAtIndex(theArray: CFArray!, _ idx: CFIndex)
-> UnsafePointer<Void>
func CFArrayGetValueAtIndex(数组:CFArray!,ux:CFIndex)
->不安全指针
它返回一个指向void的UnsafePointer,因为它应该这样做。(在Objective-C中,它返回一个常量void*
)
然而,dict是一个不安全的指针,而不是它应该是的字典
不,不是“应该这样”。看看宣言:
func CFArrayGetValueAtIndex(theArray: CFArray!, _ idx: CFIndex)
-> UnsafePointer<Void>
func CFArrayGetValueAtIndex(数组:CFArray!,ux:CFIndex)
->不安全指针
它返回一个指向void的UnsafePointer,因为它应该这样做。(在Objective-C中,它返回一个常量void*
)
然而,dict是一个不安全的指针,而不是它应该是的字典
不,不是“应该这样”。看看宣言:
func CFArrayGetValueAtIndex(theArray: CFArray!, _ idx: CFIndex)
-> UnsafePointer<Void>
func CFArrayGetValueAtIndex(数组:CFArray!,ux:CFIndex)
->不安全指针
它返回一个指向void的UnsafePointer,因为它应该这样做。(在Objective-C中,它返回一个
const void*
)请问您为什么在CFArray世界工作?CFArray桥接到NSArray,NSArray桥接到Swift阵列。如果你刚过那座该死的桥,这会容易得多!我想当我说“然而,dict是一个不安全的指针,而不是它应该是一个字典”时我并不清楚。我的意思是,虽然它返回一个指针,但指针指向一个字典,这就是我想要访问的字典(在Obj-C版本中,他们能够将指针定义为CFDictionaryRef,但我不能这么做)。关于我为什么在CFArray世界工作:实际上我不确定。。。我想我应该尝试在那里转换数组而不是指针,稍后我会尝试转换并让您知道。转换方式:let attachmentsArray=unsafeBitCast(CMSampleBufferGetSampleAttachmentsArray(buffer,0),[AnyObject].self)不确定这是否是正确的做法,而且它似乎已将数组变为不包含任何内容而不是可选内容({DependsOnOthers=0;}),因此我也不确定这是否好。然而,由于它仍然没有持有的关键,我想我不需要担心它。谢谢你的建议。“我想我应该尝试转换数组”没有什么可转换的。正如我已经说过的,CFArray是一个NSArray,它连接到Swift数组,现在你说的是纯Swift。有点困惑。好吧,CFArray类型与NSArray不同。您是如何将CFArray变成NSArray的?我可以问一下您为什么在CFArray领域工作吗?CFArray桥接到NSArray,NSArray桥接到Swift阵列。如果你刚过那座该死的桥,这会容易得多!我想当我说“然而,dict是一个不安全的指针,而不是它应该是一个字典”时我并不清楚。我的意思是,虽然它返回一个指针,但指针指向一个字典,这就是我想要访问的字典(在Obj-C版本中,他们能够将指针定义为CFDictionaryRef,但我不能这么做)。关于我为什么在CFArray世界工作:实际上我不确定。。。我想我应该尝试在那里转换数组而不是指针,稍后我会尝试转换并让您知道。转换方式:let attachmentsArray=unsafeBitCast(CMSampleBufferGetSampleAttachmentsArray(buffer,0),[AnyObject].self)不确定这是否是正确的做法,而且它似乎已将数组变为不包含任何内容而不是可选内容({DependsOnOthers=0;}),因此我也不确定这是否好。然而,由于它仍然没有持有的关键,我想我不需要担心它。谢谢你的建议。“我想我应该尝试转换数组”没有什么可转换的。正如我已经说过的,CFArray是一个NSArray,它连接到Swift数组,现在你说的是纯Swift。有点困惑。好吧,CFArray类型与NSArray不同。您是如何将CFArray变成NSArray的?我可以问一下您为什么在CFArray领域工作吗?CFArray桥接到NSArray,NSArray桥接到Swift阵列。如果你刚过那座该死的桥,这会容易得多!我想当我说“然而,dict是一个不安全的指针,而不是它应该是一个字典”时我并不清楚。我的意思是,虽然它返回一个指针,但指针指向一个字典,这就是我想要访问的字典(在Obj-C版本中,他们能够将指针定义为CFDictionaryRef,但我不能这么做)。关于我为什么在CFArray世界工作:实际上我不确定。。。我想我应该尝试在那里转换数组而不是指针,稍后我会尝试转换并让您知道。转换方式:let attachmentsArray=unsafeBitCast(CMSampleBufferGetSampleAttachmentsArray(buffer,0),[AnyObject].self)不确定这是否是正确的做法,而且它似乎已将数组变为不包含任何内容而不是可选内容({DependsOnOthers=0;}),因此我也不确定这是否好。然而,因为它仍然没有持有的关键,我想我不需要