2011-08-10 56 views
2

我宣佈在animal.h文件爲什麼編譯器提醒我「控制達到非void函數的終點」?

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

的方法,我已經實現了在animal.m文件這種方法就像

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

} 

,但在文件末尾顯示警告,如「控制達到非虛空功能結束「

誰能告訴我是什麼問題?

回答

1

init方法應該返回對象引用。 so,

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

    self.name=n; 

    self.description=d; 

    self.imageURL=u; 

    return self; 

} 
+0

thanx it really works ... – iPhone

9

你方法的返回類型是id。但你沒有任何回報。這是編譯器說的錯誤。

btw:這個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

假設動物類是NSObject的一個子類,該方法是一個初始化這裏的方法應該是什麼樣子

-(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; 
} 
相關問題