0

アプリ全体で広く使用されているメソッドがあります。次のようになります。

-(void)commandWithParams:(NSMutableDictionary*)params command:(NSString *) command method: (NSString *) method onCompletion:(JSONResponseBlock)completionBlock { }

これは、APIへのREST呼び出しを実行するために使用されます。それをあちこちで使用した後、私は別のパラメーターを追加する必要があることに気付きました(これは時々のみ使用されます)、そしてこれを行うための最良の方法は何であるか疑問に思っています。

指定されていない場合はデフォルトでnilになるパラメーターを使用することを考えましたが、これはObjective C(?)

どうすれば変更できますか?呼び出された場所で変更してnilを渡す必要がありますか?もしそうなら、あまり面倒なことなくこれを行うためのxCodeのきちんとした関数はありますか?

ありがとう。

4

2 に答える 2

2

Objective-C にはオプションの引数はありません。代わりにできることは、2 つの別々の方法を使用することです。

この方法があると想像してください:

- (void)methodWithArgument:(NSString *)str {
    // block A
}

ここで、新しい引数を追加する必要がありますが、コード内のどこにでも指定したくありません。

追加の引数を使用して新しいメソッドを作成し、実装をそれに移動します。追加の引数をどのように処理するかは、メソッドが何をするかによって異なります。nil古いメソッドから、新しい引数として新しいメソッドを呼び出します。

- (void)methodWithArgument:(NSString *)str andArgument:(NSString *)str2 {
    if (str2 != nil) {
        // do something.
    }
    // block A
}

- (void)methodWithArgument:(NSString *)str {
    [self methodWithArgument:str andArgument:nil];
}

これは、オプションのパラメーターを持つメソッドがあるかのように機能し、デフォルトはnil(または選択したもの) になります。これは一般的なデザイン パターンであり、Apple のフレームワーク全体でも見られます。

于 2012-12-04T15:43:24.650 に答える
1

上記の方法の代わりに、AppCode でリファクタリングを行うことができます。それはそのようなことをすることを可能にします。

于 2012-12-04T15:51:59.910 に答える