Это ненужное предупреждение? - PullRequest
1 голос
/ 04 сентября 2010

У меня есть следующий статический метод в одном из моих служебных классов

+ (UIImage *) getImage:(NSURL*) fromUrl { //Warning here
    NSData *urlData = [NSData dataWithContentsOfURL:fromUrl];
    UIImage *image = [[[UIImage alloc] initWithData:urlData] autorelease];
    return image;
}

Для этого метода я получаю следующее предупреждение:

предупреждение: несовместимо Objective-Cтипы, инициализирующие 'struct NSURL *', ожидаемые 'struct NSString *'

Я не заметил никаких исключений, могу ли я это игнорировать?Или как я могу это исправить?

Ответы [ 2 ]

9 голосов
/ 04 сентября 2010

Предупреждение верно в том смысле, что существует конфликтующий тип, и, как и во всех предупреждениях, вы должны его исправить.

Скорее всего, у вас объявлено два метода getImage:, один из которых принимаетNSString и тот, который принимает NSURL в качестве единственного аргумента.В Objective-C пространство имен метода является плоским, и рекомендуемый шаблон заключается в том, что для любого заданного селектора должна быть только одна объявленная аргументация.

Однако существует более тонкая проблема.getImage: на самом деле не так описательно, как могло бы быть и не так описательно, как предписывает стандартная практика.

Лучшее объявление метода было бы:

+ (UIImage *) imageFromURL: (NSURL *) anURL;

Более описательно.Менее двусмысленно.

2 голосов
/ 04 сентября 2010

Вы, вероятно, делаете это:

UIImage * image = [MyUtilityClass getImage:@"http://example.com/image.jpg"];

Вы должны делать это:

UIImage * image = [MyUtilityClass getImage:[NSURL URLWithString:@"http://example.com/image.jpg"]];

(игнорируя соглашения об именах ....)

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