別の型を返したい関数があります
-(UIButton *)returnObject1 ;
{
//dosomething
return aUIButton;
}
-(UIView *)returnObject2 ;
{
//dosomething
return aUIView;
}
2つの関数を1つにマージして、異なるNSObject(UIButton、UIView)を返すことを望んでいます。それは可能ですか?
コメントを歓迎します
別の型を返したい関数があります
-(UIButton *)returnObject1 ;
{
//dosomething
return aUIButton;
}
-(UIView *)returnObject2 ;
{
//dosomething
return aUIView;
}
2つの関数を1つにマージして、異なるNSObject(UIButton、UIView)を返すことを望んでいます。それは可能ですか?
コメントを歓迎します
両方を含む独自のカスタムオブジェクトを作成して、その1つを返すだけです。
編集:OPが2つのオブジェクトを返したいことを理解しました。この回答はその場合にのみ適用されます。
リターンタイプを宣言しないでください。代わりにこれに変更してください:
- (id)returnObject
{
if (something) {
return aUIButton;
}
return aUIView;
}
ただしUIButton
、...はのサブクラスですUIView
。つまり、代わりにこれを実行できます。
- (UIView *)returnObject
{
if (something) {
return aUIButton;
}
return aUIView;
}
Objective-cでは、コードの実行中はメソッドの戻り型はまったく関係がないことに注意してください。全体の目的は、コードが何を期待しているかをコンパイラーに通知し、クラッシュを回避できるようにすることです。したがって、可能な場合はリターンタイプを指定することをお勧めしますが、必須ではありません。
これがあなたが望むものの例です:
-(id)returnObject:(int)type
{
if (type == 1)
return aUIButton;
else if (type == 2)
return aUIView;
return nil;
}