2011-10-25 13 views
0

浮動小数点数の配列の参照を渡そうとしています。 問題はコールです。なぜなら私はCのために開発していますが、私はObjective C関数を呼びたいと思っています。どのようにして電話をかけることができますか?私はVideoCameraBindedがインスタンスではなくクラスであると仮定するつもりだ浮動小数点数の配列を渡すC関数からObjective C関数を呼び出す

+1

試しましたか?あなたはどんな問題に遭遇しましたか? –

+0

私はStephenに同意します。さらに、objcメソッドはどのように定義されていますか? – Kevin

答えて

1

bool VideoCamera_Camera(float *buffer) { 
    [VideoCameraBinded VideoCamera_CameraUpdateBinded: buffer]; 
} 

ありがとう: がありますが、コードを持っています。私が間違っている場合は、私に知らせてください。

あなたはVideoCameraBindedのクラスに定義された方法、このようなものがある場合:

- (void)VideoCamera_CameraUpdateBinded:(float *)buffer { 
//... 
} 

をあなたの問題がどこから来ているし、私は知りません。特定のエラーやその他の問題が発生していますか?

+0

解決済み、problentはここXDではなかった、私は間違った方法で配列にアクセスしようとしていた、ありがとう!!! – Gustavo

0

VideoCamera_CameraUpdateBinded:のパラメータタイプは何ですか?

NSArrayをループする必要がある場合は、配列を作成して他のobj-cメソッドと同様に送信します。浮動小数点を何らかのオブジェクト(たとえばNSNumber)に格納する必要があります。

obj-c関数がfloat *を使用している場合は、実行するのが良いはずです。

ご参考までに、bufferSizeも渡すべきではありませんか?

1

Objective-Cコードにアクセスでき、Objective-Cコードを変更できる場合は、そこにC APIを追加します。それ以外の場合は

、あなたは本当にあなたが直接Objective-Cのランタイムを使用することができますObjective-Cのコードを変更することはできませんが、これは推奨されている場合:

#include <objc/runtime.h> 

objc_msgSend(VideoCameraBinded, // receiver 
      sel_registerName("VideoCamera_CameraUpdateBinded:"), // selector 
      buffer); // comma separated list of arguments 

あなたはObjective-Cランタイムにリンクする必要があります図書館、通常libobjc:

$ clang mycode.c -lobjc 
$ # or cc if you use GCC 

Objective-Cのメソッドではなくfloat *NSArray *を想定している場合、あなたはとCore Foundationのを使用することができます3210。 CFArrayRefNSArray *は互換性がありますが、CFArrayRefはCタイプですので、それを使用できます。 CFNumberRefNSNumber *についても同じです(Apple's documentation on thisを参照)。

関連する問題