Какао - проблема с этим кодом с помощью NSBundle
Было предложено использовать эту строку кода для вызова изображения из папки ресурсов / проекта. Я также вижу, что он используется именно так на многих уроках веб-сайта.
NSBundle *mb=[NSBundle mainBundle];
NSString *fp=[mb pathForResource:@"topimage" ofType:@"PNG"];
NSImage *image=[NSImage initWithContentsOfFile:fp];
ОДНАКО, я получаю следующее предупреждение:
NSImage может не отвечать на +initWithContentsOfFile+
Документация по NSImage показывает, что initWithContentsOfFile на самом деле является методом, который должен работать. Чего мне здесь не хватает?
2 ответа
Вы скучаете по +alloc
NSImage* image = [[NSImage alloc] initWithContentsOfFile:fp];
Вы также можете использовать +imageNamed:
, который выбирает изображения из вашего основного комплекта.
NSImage* image = [NSImage imageNamed:@"topImage.png"];
initWithContentsOfFile:
является методом экземпляра, но вы отправляете это сообщение классу NSImage. Вам необходимо отправить его экземпляру, в частности, недавно выделенному экземпляру.
Это где alloc
Это метод класса, который выделяет экземпляр, который вы немедленно отправляете init…
сообщение (как показал Даррен).
Не забудьте выпустить экземпляр, когда закончите. Я обычно автоматически выпускаю экземпляр сразу после его запуска; тогда Какао выпустит экземпляр для меня в соответствующее время. См. Руководство по программированию управления памятью для какао для получения дополнительной информации.