Swift - 如何使用malloc?

3

我正在尝试将一个Objective-C应用程序翻译成Swift,但我不知道如何实现malloc。

在Swift中是否可以使用它?

谢谢


2
如果你想使用malloc来分配一些内存,那么你不需要这样做。在Swift中不使用直接内存分配。 - Kyokook Hwang
3
在Swift中,你可以毫无问题地使用malloc()函数。问题在于,你是否应该这样做,或者最好使用其他数据结构(例如Array)。 - Martin R
2
看到你具体的问题会有所帮助。可以使用malloc(),但可能有更好的替代方案。 - Martin R
谢谢。我的需求是为音频缓冲区分配一些内存:buffer.mData = malloc( inNumberFrames * 2 ); // 缓冲区大小 - MeV
我可能会找到另一个解决方案。谢谢。 - MeV
2
请参见我的答案:https://dev59.com/boPba4cB1Zd3GeqPvaso#26006918 - matt
1个回答

1

如果在Swift中使用ObjC或C,您需要实现一个桥接头文件。桥接头文件中导出的函数在Swift应用程序/模块中可用。有关概述,请参见此处

如果您只需要在C端“调用某些代码”,则从C导出的函数基本上只是Swift的包装器。但是,如果您需要与从这些函数返回的数据交互--尤其是如果是malloc'd并且不是简单的原始类型--Swift具有许多与C相关的类型供您使用(请参见此处以获取详细信息)。

此外,如果您尝试包装或与C++代码交互,则无法直接从Swift中进行。您必须建立与ObjC或C的初始接口,然后将其桥接到Swift。这真的不太有趣,但幸运的是,它不像桥接ObjC(主要是)或C那样常见。

对于任何适用的用例,除非您有某些原因需要低级别的Core Audio(当然,比如移植您已经拥有的应用程序),否则AVAudioEngine(iOS8+)比Core Audio简单得多,并且在Swift中可以轻松使用。


“…适用于任何适用的用例。”几乎适用于所有情况。但是,即使在这条评论发布两年后,AVAudioEngine仍然无法完全胜任某些任务。 - Steve Cotner

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接