Почему компилятор предупреждает меня о «достижении контроля конца непустой функции»? - PullRequest
2 голосов
/ 10 августа 2011

Я объявил метод в файле animal.h

-(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;

}

, но в конце файла онвыводит предупреждение типа «Управление достигает конца не пустой функции»

Может кто-нибудь сказать мне, в чем проблема?

Ответы [ 3 ]

9 голосов
/ 10 августа 2011

Тип возврата вашего метода id.Но вы ничего не возвращаете.Это ошибка, как сказал компилятор.

Кстати: у этого метода 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;
}
1 голос
/ 12 августа 2011

Метод init должен возвращать объект Reference .. итак,

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

  self.name=n;

  self.description=d;

  self.imageURL=u;

  return self;

}
0 голосов
/ 10 августа 2011

Предполагая, что класс животных является подклассом 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...