0

すべての意図と目的において、Objective-C のメソッド宣言は、2 つの追加パラメーターを前に付加した単なる C 関数です (Objective-C ランタイム プログラミング ガイドの「メッセージング」を参照してください)。したがって、次の Python の例が示すように、Objective-C メソッド宣言の構造は、Python などの言語で名前付きまたはキーワード パラメータを使用するメソッドの構造とは異なります。呼び出されたときに異なる値を持ちます。

def func(a, b, NeatMode=SuperNeat, Thing=DefaultThing):
    pass

Objective-c 関連の本でこの例を示す目的は何ですか?

4

3 に答える 3

1

これは、Objective-C が他の言語 (Python など) がサポートしている特定の機能をサポートしていないことを示す (貧弱な) 例です。このテキストでは、Objective-C には形式の「名前付きパラメーター」があることを説明しています。

- (void)myMethodWithArgument:(NSObject *)argument andArgument:(NSObject *)another;

これらのパラメーターは、Python がサポートしているデフォルト値をサポートしていません。

2 つの引数を先頭に追加するという言及は、Objective-C でのメッセージ パッシングが内部でどのように機能するかを示唆しています。これは、各メソッドにレシーバー オブジェクトとセレクターを先頭に追加することによって行われます。特に初心者レベルでは、Objective-C でコードを記述するためにこの詳細を知る必要はありませんが、Apple はこのプロセスについてここで説明しています。

于 2012-06-06T11:39:50.883 に答える
0
def func(a, b, NeatMode=SuperNeat, Thing=DefaultThing):
    pass

NeatMode、Thingは、ObjectiveCのオプションの名前付きパラメーターです。

- (void) func:(int)a :(int)b NeatMode:(object*)SuperNeat Thing:(object*)DefaultThing

この主題についてもっと読む http://www.diveintopython.net/power_of_introspection/optional_arguments.html

于 2012-06-06T11:36:04.927 に答える
0

ここでのポイントは、関数でパラメーターを受け取るために「使用」される方法と、objective-c が行う方法を区別することだと思います。通常は:

public void accumulate(double value, double value1) {                                    

}

そして目的-c:

-(void)accumulateDouble:(double)aDouble withAnotherDouble:(double)anotherDouble{


}
于 2012-06-06T11:37:27.340 に答える