2011-08-10 2 views
2

私は なぜコンパイラは "制御が非空白関数の終わりに達する"と警告していますか?

-(id)initWithName:(NSString *)n description:(NSString *)d url:(NSString *)u; 

animal.hファイルでメソッドを宣言していると私は

-(id)initWithName:(NSString *)n description:(NSString *)d url:(NSString *)u 
{ 
    self.name=n; 
    self.description=d; 
    self.imageURL=u; 

} 

ようanimal.mファイルにこのメソッドを実装しているが、ファイルの末尾に、それはコントロール」のような警告を示します非空白関数の終わりに達する」

誰でも問題を教えていただけますか?

答えて

1

どのように見えるかだと仮定すると、

-(id)initWithName:(NSString *)n description:(NSString *)d url:(NSString *)u 
{ 
    if ((self = [super init])) { 
     self.name=n; 
     self.description=d; 
     self.imageURL=u; 
    } 
    return self; 
} 
+0

ありがとうございました... – iPhone

9

メソッドの戻り値の型はidです。しかし、あなたは何も戻っていません。これはコンパイラが言ったようにエラーです。

Btw:このinitメソッドには多くの脆弱性があります。動物クラスはNSObjectののサブクラスであり、そしてこの方法は、ここで初期化されているメソッドは、メソッドは、オブジェクト参照を返す必要がありますinitを

-(id)initWithName:(NSString *)n description:(NSString *)d url:(NSString *)u 
{ 
    if(self = [super init]){ 
     self.name=n; 
     self.description=d; 
     self.imageURL=u; 
    } 
    return self; 
} 
0

:あなたはそれを変更する必要があります。 。 so、

-(id)initWithName:(NSString *)n description:(NSString *)d url:(NSString *)u 
{ 

    self.name=n; 

    self.description=d; 

    self.imageURL=u; 

    return self; 

} 
関連する問題