使用 ScheduledAudioFileRegion 安排整个文件

Schedule an entire file with ScheduledAudioFileRegion

在 Objective-C 中,我们填写了 ScheduledAudioFileRegion 结构,如下所示:

ScheduledAudioFileRegion playRegion;
playRegion.mTimeStamp.mFlags = kAudioTimeStampSampleTimeValid;
playRegion.mTimeStamp.mSampleTime = 0;
playRegion.mCompletionProc = NULL;
playRegion.mCompletionProcUserData = NULL;
playRegion.mAudioFile = audioFileID;
playRegion.mLoopCount = 0;
playRegion.mStartFrame = 0;
playRegion.mFramesToPlay = -1;

mFramesToPlay 设置为 -1 以告诉它播放整个文件。

Swift 不允许我将 UInt32 设置为 -1。那么如何让它播放整个文件呢?

我知道这不是唯一一个将 UInt32 的负值用作 Obj-C 中的标志的地方,但这是我第一次 运行 进入它。

mFramesToPlay是一个UInt32,而Swift不会隐式转换 在有符号和无符号整数之间。你可以写

playRegion.mFramesToPlay = UInt32(bitPattern: -1)

或者只是

playRegion.mFramesToPlay = UInt32.max