Clang генерирует предупреждение "method '-init' not found" для очень простого класса - PullRequest
1 голос
/ 14 марта 2011

Я только что наткнулся на Clang / LLVM сегодня и решил попробовать.

Моя система FreeBSD8.1-Release.Системным компилятором по умолчанию является GCC4.2.1, который я использовал для компиляции своего проекта Objective-C до сих пор.

Я играю со Статическим анализатором и хотел бы знать, какустраните одно из генерируемых предупреждений.

MyClass.h

#import <objc/Object.h>

@interface MyClass: Object {
}

-(MyClass*) init;

@end

MyClass.m

#import "MyClass.h"

@implementation MyClass

-(MyClass*) init {
        self = [super init];
        if (self) {
                // do stuff
        }
        return self;
}

@end

Предупреждение:

%clang --analyze MyClass.m
MyClass.m:7:9: warning: method '-init' not found (return type defaults to 'id')
        self = [super init];
               ^~~~~~~~~~~~
1 diagnostic generated.

Я так понимаю, что анализатор не знает, как определить тип super (в данном случае Object ).Есть ли способ устранить это предупреждение (кроме как путем подавления)?Я посмотрел на кастинг super , но, похоже, это не разрешено.

Спасибо!Макс


Обновление

Спасибо Дейву и bbum за то, что они указали мне правильное направление для устранения предупреждения.Теперь я пытаюсь выяснить, почему предупреждение возникает в первую очередь.

Если у кого-то есть какие-либо идеи или предложения, я люблю их слышать.

Спасибо, Макс

Ответы [ 2 ]

3 голосов
/ 14 марта 2011

Два выпуска:

  • Вы должны наследовать от NSObject, а не Object.
  • Ваш метод init должен возвращать id, а не MyClass*.
0 голосов
/ 24 января 2012

В предупреждении говорится, что он не знает какого-либо метода с именем -init вообще в области действия на тот момент. Вам нужно импортировать файл заголовка, который объявляет -init, который, вероятно, является Foundation.h или чем-то, в зависимости от того, какую систему вы используете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...