Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/95.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 无法调用类型为';非女性化指针<;浮动>';具有类型为';(不可女性化的指针!)';_Ios_Swift - Fatal编程技术网

Ios 无法调用类型为';非女性化指针<;浮动>';具有类型为';(不可女性化的指针!)';

Ios 无法调用类型为';非女性化指针<;浮动>';具有类型为';(不可女性化的指针!)';,ios,swift,Ios,Swift,第5行上的此关联对应用程序的成功没有帮助。但我真的不明白那一刻发生了什么 ÜnsafeMutablePointer的重载与部分匹配的参数列表:(RawPointer)存在 但这意味着什么?谢谢 override func buffer(withCsound cs: CsoundObj) -> Data { let length = Int(AKSettings.shared().numberOfChannels) *

第5行上的此关联对应用程序的成功没有帮助。但我真的不明白那一刻发生了什么

ÜnsafeMutablePointer的重载与部分匹配的参数列表:(RawPointer)存在

但这意味着什么?谢谢

override func buffer(withCsound cs: CsoundObj) -> Data {
            let length    = Int(AKSettings.shared().numberOfChannels) *
                            Int(AKSettings.shared().samplesPerControlPeriod) * 4
            let num       = length / 4
            let floats    = UnsafeMutablePointer<Float>(malloc(length))

            /* The phase and amplitude are different for each line to get a nice
             * gimmick. */
            let phase     = (self.amplifier + 0.8) / 1.8

            for i in 0 ... num - 1 {
                /* The amplitude is placed within the for-loop because it can fade
                 * to a slightly different value during one plot refresh. */
                let amplitude = self.amplifier * self.amplitude

                /* It is incredibly important that `time` and `phase` aren't
                 * multiplied with the frequency or else it will bump at each
                 * frequency change. */
                var t = (time + Double(i) / Double(num) * self.frequency + phase)

                floats[i] = Float(sin(t * 2 * 3.14))

                /* It is multiplied with a "regular" 0.5 Hz sine to get both ends
                 * to fade out nicely. It's sort of a simplistic window function. */
                t = Double(i) / Double(num)
                floats[i] *= Float(sin(t * 1 * 3.14) * amplitude)
                floats[i] *= 1 - pow(1 - Float(i) / Float(num), 2.0)

                time += self.frequency / 44100 / 2

                /* Fade smoothly to the next frequency and amplitude. */
                self.frequency += (nextFrequency - self.frequency) / 44100.0 / 4.0
                self.amplitude += (nextAmplitude - self.amplitude) / 44100.0 / 2.0
            }

            /* We keep the time between 0 and 1 to make sure it never overflows /
             * loses the necessary precision. */
            time = fmod(time, 1.0)

            return Data(bytesNoCopy: UnsafeMutablePointer<UInt8>(floats), count: length, deallocator: .free)
        }
覆盖函数缓冲区(使用csound cs:CsoundObj)->数据{
let length=Int(AKSettings.shared().numberOfChannels)*
Int(AKSettings.shared().samplesPerControlPeriod)*4
设num=length/4
设floats=unsafemeutablepointer(malloc(长度))
/*每一条线的相位和振幅是不同的,以获得一个好的结果
*花招*/
let相位=(自放大器+0.8)/1.8
对于0中的i…num-1{
/*振幅位于for循环中,因为它可能会衰减
*在一次打印刷新过程中设置为稍有不同的值*/
让振幅=自放大器*自振幅
/*“时间”和“阶段”的区别是非常重要的
*乘以频率,否则它将在每个
*频率变化*/
var t=(时间+双(i)/双(num)*自频率+相位)
浮点数[i]=浮点数(sin(t*2*3.14))
/*它与“常规”0.5 Hz正弦相乘,得到两端
*这是一个简单的窗口函数*/
t=双(i)/双(num)
浮点数[i]*=浮点数(sin(t*1*3.14)*振幅)
浮点数[i]*=1-功率(1-浮点数(i)/浮点数(num),2.0)
时间+=自身频率/44100/2
/*平滑衰减到下一个频率和振幅*/
self.frequency+=(下一个频率-self.frequency)/44100.0/4.0
自振幅+=(下一个振幅-自振幅)/44100.0/2.0
}
/*我们将时间保持在0和1之间,以确保它不会溢出/
*失去必要的精确度*/
时间=fmod(时间,1.0)
返回数据(字节nocopy:UnsafeMutablePointer(floats),计数:长度,deallocator:.free)
}

您可以找到一些类似的文章,其中包含错误消息

例如:

尤其是你最好读书


具体到你的情况

更改此行:

let floats    = UnsafeMutablePointer<Float>(malloc(length))
并更改最后一行:

return Data(bytesNoCopy: UnsafeMutablePointer<UInt8>(floats), count: length, deallocator: .free)

备选案文2

将行
let floats=UnsafeMutablePointer(malloc(length))
更改为:

var data = Data(count: length)
data.withUnsafeMutableBytes {(floats: UnsafeMutablePointer<Float>) in
(它们之间的所有行都包含在…}中的闭包
{(float:unsafemeutablepointer)

让baseAddress=CVPixelBufferGetBaseAddress(imageBuffer)
var buf=unsafeBitCast(基址,收件人:UnsafeMutablePointer.self)

Hi OOper,现在事情更容易理解了。还有跑步。谢谢你的提名。再见。
return Data(bytesNoCopy: rawBytes, count: length, deallocator: .free)
var data = Data(count: length)
data.withUnsafeMutableBytes {(floats: UnsafeMutablePointer<Float>) in
}
return data
let baseAddress = CVPixelBufferGetBaseAddress(imageBuffer)
var buf = unsafeBitCast(baseAddress, to: UnsafeMutablePointer<UInt8>.self)