簡體   English   中英

IOS/Objective-C/Swift:在 Swift 中處理 UnsafePointer

[英]IOS/Objective-C/Swift: Handling UnsafePointer in Swift

在我用於語音識別的 Objective-C 方法中,我有一些代碼來測量揚聲器的音量。 但是,當我嘗試將其轉換為 Swift 時,我遇到了 Swift 如何處理相對於 Objective-C 的指針的問題。

這是Objective-C doe:

    AVAudioFormat *recordingFormat = [inputNode outputFormatForBus:0];

        [inputNode installTapOnBus:0 bufferSize:1024 format:recordingFormat block:^(AVAudioPCMBuffer * _Nonnull buffer, AVAudioTime * _Nonnull when) {

            if ([buffer floatChannelData] != nil) {//open 1 in block

                float volume = fabsf(*buffer.floatChannelData[0]);

                    }
}];

嘗試在 Swift 中執行此操作會:

 let data = UnsafeMutablePointer<Float>(buffer.floatChannelData)


            if let data = &buffer.floatChannelData?[0] {
                let _ : Float = data[0]
          }

給出多個錯誤。

在此先感謝您的任何建議。

我不明白你為什么需要data

你可以這樣寫:

if buffer.floatChannelData != nil {
    let volume = buffer.floatChannelData![0].pointee
    //...
}

或者更快捷如下:

if let floatChannelPointers = buffer.floatChannelData {
    let volume = floatChannelPointers[0].pointee
    //...
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM