0

別の型を返したい関数があります

-(UIButton *)returnObject1 ;
{

    //dosomething

    return aUIButton;

}

-(UIView *)returnObject2 ;
{

    //dosomething

    return aUIView;
}

2つの関数を1つにマージして、異なるNSObject(UIButton、UIView)を返すことを望んでいます。それは可能ですか?

コメントを歓迎します

4

3 に答える 3

0

両方を含む独自のカスタムオブジェクトを作成して、その1つを返すだけです。

編集:OPが2つのオブジェクトを返したいことを理解しました。この回答はその場合にのみ適用されます。

于 2012-06-26T03:11:44.977 に答える
0

リターンタイプを宣言しないでください。代わりにこれに変更してください:

- (id)returnObject
{
  if (something) {
    return aUIButton;
  }

  return aUIView;
}

ただしUIButton、...はのサブクラスですUIView。つまり、代わりにこれを実行できます。

- (UIView *)returnObject
{
  if (something) {
    return aUIButton;
  }

  return aUIView;
}

Objective-cでは、コードの実行中はメソッドの戻り型はまったく関係がないことに注意してください。全体の目的は、コードが何を期待しているかをコンパイラーに通知し、クラッシュを回避できるようにすることです。したがって、可能な場合はリターンタイプを指定することをお勧めしますが、必須ではありません。

于 2012-06-26T03:13:26.880 に答える
0

これがあなたが望むものの例です:

-(id)returnObject:(int)type
{
    if (type == 1)
        return aUIButton;
    else if (type == 2)
        return aUIView;
    return nil;
}
于 2012-06-26T03:12:05.943 に答える