2

私がそれを言うならそれは正しいですか

[anIstance aMethod];

と同等です

anIstance.aMethod; --?

その場合、1つ以上のパラメーターを使用するメソッドはどうでしょうか。

次のステートメントはありますか

[anIstance aMethod : aParameter];

同等のドット表記がありますか?

私はで試しました

anIstance.aMethod : aParameter;

anIstance.aMethod(aParameter);

そして、それらは機能していないようです(コンパイル時エラー)

ドット表記のパラメーターを使用してメソッドを呼び出す方法がない場合は、合成されたセッターメソッド(私が知る限り、定義上、引数を取る)はどうでしょうか?

合成されたプロパティがある場合、次のステートメントを実行します

anIstance.aProperty = anotherObject;

相対セッターメソッドを呼び出しますか?それとも、getterメソッドを呼び出しますか?

4

4 に答える 4

3

これについては、Apple の「The Objective C Programming Language」ガイドで説明されています。

@interface MyClass : NSObject
{
    float value;
}
@property float value;
@end

プロパティの宣言は、2 つのアクセサー メソッドを宣言することと同じと考えることができます。したがって

@property float value;

次と同等です。

- (float)value;
- (void)setValue:(float)newValue;
于 2010-01-19T14:05:47.907 に答える
3

他の回答は一般的な考え方を伝えていますが、ドット表記とプロパティは別の概念であることを明示的に述べたいと思います。ドット表記は、セッター (setSomething:単一のパラメーターを取る名前のメソッド) とゲッターを対象としており、パラメーターを取らないメソッドにも使用できます (ただし、 のようなアクションに使用するスタイルは非常にmyObject.doSomething貧弱です)。

プロパティは、ゲッターとセッターをより簡単に宣言し、コードを生成するように設計されています。

したがって、2 つの概念は関連していますが、手動で記述した独自のゲッターとセッターでドット表記を使用することは完全に可能です(常にスタイルが悪いとは限りません)。プロパティを使用することも完全に可能です (そして通常は完全に受け入れられます!)。getter と setter が生成されていても、ドット表記ではなく通常のブラケット構文で使用できます。

しかし、元の質問に答えるために、いいえ、ドット表記はパラメーターを取りません。これは、パラメーターを取らないメソッドで使用するために特別に設計されています。

于 2010-01-20T00:05:37.593 に答える
0

ドット表記は、プロパティに対してのみ有効です。プロパティは、Objective-Cの@property宣言で宣言されます

このような:

interface MyClass {
   NSString * x;
}

@property (copy) NSString *x;

実装:

@synthesize x;

// this will generate a setter and getter method:
// - (NSString *) x {}
// - (void) setX:(NSString *)value {}

次に、次を使用できます。

MyClass *obj = [[MyClass alloc] init];

obj.x = @"test";

ただし、これはプロパティに対してのみ機能します。メソッド用ではありません。

于 2010-01-19T14:02:24.060 に答える
0

ドット表記は、Objective-C のプロパティのシンタックス シュガーにすぎません。一般的なメソッド呼び出しには使用できません。

于 2010-01-19T14:05:22.417 に答える