1

私はobjective-cに変換しているJavaプログラムを持っています。

Javaではドット表記を使用しており、たとえば次のコード行があります。

this.m_root.computeGlobalTransforms();

これは、computeGlobalTransforms()というメソッドを呼び出します。

Objective-cでこのようなドット表記を使用できますか、それとも行をとして記述し、オブジェクトとして「m_root」を渡す必要がありますか?

[self computeGlobalTransforms:m_root];
4

3 に答える 3

4

がクラスオブジェクトcomputeGlobalTransformsのインスタンスメソッドであり、m_rootm_rootのクラスプロパティでselfある場合、構文は次のようになります。

[self.m_root computeGlobalTransforms]. 

Learning Objective-C:APrimerのメソッドとメッセージングを参照することをお勧めします。


computeGlobalTransformsがメソッドの場合VA_Bone、構文は次のようになります。

VA_Bone *bone = [[VA_Bone alloc] init];
[bone computeGlobalTransforms];

bone変数は単純なローカル変数であるため、を参照する必要はありませんself.m_root


ちなみに、慣例として、変数名とクラス名の中央にあるアンダースコアは通常使用されません。Cocoaのコーディングガイドラインのプロパティとデータ型の命名を参照してください。Objective-Cを使用したプログラミングの規則の「キャメルケース」への参照も参照してください。

したがって、より一般的な命名規則はVABone、クラス用です。同様に、あなたm_rootがほのめかした元の資産については、(a)よりわかりやすい名前を付けます。(b)キャメルケースを使用します。の「m」が何を表すのかはわかりませんがm_root(これだけで問題がわかります)、中サイズの画像の場合は、などの可能性がありますmediumSizedImagesRoot

于 2013-02-26T16:23:44.240 に答える
3

ドット表記を使用して、ゼロパラメータメソッドを呼び出すことができます。あなたは絶対にすべきではありません。ドット表記は、実行時ではなくコンパイラによって処理されます-なぜそれが機能するのか、なぜそれを使用すべきでないのか(...セッター/ゲッター以外の場合)について説明する同様の質問に対する非常に良い答えがありますここ:

クラスメソッドを使用したObjective-Cドット表記?

于 2013-02-26T16:29:54.450 に答える
0

いいえ、できません。プロパティのセッターとゲッターにはDot.Notationしか使用できません。

于 2013-02-26T16:18:17.983 に答える