2009-04-26 2 views
0

float "byref"を目的のCのメソッドに渡す方法はありますか?ここで私が持っているものの概要を示します:Objective Cにfloat "byref"を渡しますか?

メソッドシグネチャ:

- (void) MyMethod: (float*) min max:(float*) max; 

方法:私は次の警告を得る

float min1 = 0; float max1 = 0; 
[self MyMethod: min:&min1 max:&max1]; 

を:

- (void) MyMethod: (float*) min max:(float*) max 
{ 
} 

がそれを起動しようとしています、MyMethodを呼び出すときにコードが異常終了する:

警告: ':分:最大:+ MyMethodは' 'MyClassのは、' に応答しないことが、あなたのメソッドのシグネチャが

- (void) MyMethod: (float*) min max:(float*) max 

として宣言されて

答えて

3

いますが、

- MyMethod:min:max: 
としてそれを呼んでいます

...これには、宣言に含まれていない追加の「min:」が含まれています。

float min1 = 0; float max1 = 0; 
[self MyMethod:&min1 max:&max1]; 

にあなたの呼び出し元のコードを変更してみてください、それは物事を改善されるかどうかを参照してください。

しかし、私は「MyMethodは+:最小:最大:」あなたのエラーメッセージが署名を訴えていることがわかり、また、あなたがクラスではなくのインスタンスにメッセージを送信しようとしている示唆していますクラス;あなたはそれを修正する必要があります。

最後に、Objective-Cコードのメソッドセレクタは、通常、小文字で始まります。共通のObjective-C naming conventionsを読んでみてください。

+0

問題が解決しました。エラーメッセージを再入力すると、余分な "最小"のものがタイプミスでした。問題は、静的/クラスメソッドからインスタンスメソッドを呼び出そうとしていたことが実際に(あなたが指摘したように)問題でした。私は命名規則を読み上げます。助けてくれてありがとう! – Marty

+0

AppleのCocoaフレームワークの命名規則はhereと記載されています。 –

+0

...またはむしろ、http://developer.apple.com/DOCUMENTATION/Cocoa/Conceptual/CodingGuidelines/CodingGuidelines.html –