在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中的标志的地方,但这是我第一次遇到它。

最佳答案

mFramesToPlayUInt32,Swift不会隐式转换
在有符号和无符号整数之间。你可以写

playRegion.mFramesToPlay = UInt32(bitPattern: -1)


要不就

playRegion.mFramesToPlay = UInt32.max

关于ios - 使用ScheduledAudioFileRegion计划整个文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27992634/

10-13 05:42