gpt4 book ai didi

ios - NSLog 立即执行而不是在循环结束时执行

转载 作者:行者123 更新时间:2023-11-28 17:59:41 25 4
gpt4 key购买 nike

我在 IBAction 中有以下代码。我想测量 AVSpeechSynthesizer 运行一个方向列表所花费的确切时间。但是,executionTime 会立即记录,而不是在循环结束时记录(返回不到一秒,而不是我预期的 10-15 秒)。我做错了什么?

NSDate *methodStart = [NSDate date];

for (NSString* direction in directions) {

AVSpeechUtterance *aDirection = [[AVSpeechUtterance alloc] initWithString:direction];
aDirection.rate = .3;
[self.synthesizer speakUtterance:aDirection];
}

NSDate *methodFinish = [NSDate date];
NSTimeInterval executionTime = [methodFinish timeIntervalSinceDate:methodStart];
NSLog(@"executionTime = %f", executionTime);

最佳答案

那是因为 speakUtterance 调用是异步的。让您的类实现 AVSpeechSynthesizerDelegate 协议(protocol)并将其设置为 AVSpeechSynthesizer 的委托(delegate),最后实现 speechSynthesizer:didFinishSpeechUtterance: 消息。

关于ios - NSLog 立即执行而不是在循环结束时执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21608387/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com