

swiftでAVAudioPCMBufferを使ってbufferに値を書き込んでサイン波を鳴らすことは、  
<http://www.tmroyal.com/playing-sounds-in-swift-audioengine.html>  
を参考にして出来ました。  
これをobjective-Cで書きたいのですが、bufferに値を書き込むところでメッセージの送り方が分からなくて難儀しています。  
先のサイトのswiftだと、ここです。

[code]

        for var i = 0; i < Int(buffer.frameLength); i+=Int(n_channels) {
            var val = sinf(441.0*Float(i)*2*Float(M_PI)/sr)
    
            buffer.floatChannelData.memory[i] = val * 0.5
        }
    
[/code]

これをobjective-
Cで書こうとしたときに、buffer.floatChannelDataまでは補完で出てくるのですが、それに続くmemory[i]は補完に出て来ません。  
てっきり,

[code]

    buffer.floatChannelData.memory[i] = val;
    
[/code]

で書けるものと思っていたのですが、どうやって書けばよいのでしょうか？

どうぞよろしくお願いします。


CC BY-SA 3.0
2015-11-01T07:27:47.843
18295
2016-10-28T01:46:27.480
2015-11-01T09:02:49.603
7362
13063
question
swift objective-c avfoundation
swiftでAVAudioPCMBufferを使って書いたコードをobjective-Cに直したい。


[AVAudioPCMBuffer](https://developer.apple.com/library/prerelease/ios/documentation/AVFoundation/Reference/AVAudioPCMBuffer_Class/index.html)のドキュメントより、`floatChannelData`は`UnsafePointer<UnsafeMutablePointer<Float>>`として宣言されていますが、`float`のポインタへのconstポインタを意味しています。

Swiftはポインタを直接扱えないため、`memory`を経由してアクセスしますが、間接演算子を用いて以下のように書き換えられます。

[code]

    *buffer.floatChannelData[i] =  val;
    
[/code]

Objective-Cというよりも、C言語のポインタの知識が必要になるかと思います。


CC BY-SA 3.0
2015-11-01T09:12:08.733
18300
2015-11-01T09:12:08.733
5337
18295
answer