NSBitmapImageRep загрузить изображение

я совершенно новичок в Objective C и следовал некоторым инструкциям, которые я нашел, но на данный момент я застрял.

я пытаюсь загрузить изображение с помощью следующего кода:

NSBitmapImageRep *img;
img = [NSBitmapImageRep imageRepWithContentsOfFile:filename];

"имя файла" является допустимым указателем. Но компилятор говорит мне:

Incompatible pointer types assigning to 'NSBitmapImageRep *' from 'NSImageRep * _Nullable' 

Что я упускаю или делаю неправильно?


person Rolf    schedule 28.02.2016    source источник
comment
что это за образ? filename может быть допустимым объектом NSString, но уверены ли вы, что он указывает на правильный файл?   -  person Michael Dautermann    schedule 28.02.2016
comment
Борис Веребский решил мою проблему. Я не знал о явном приведении типов в Objective-C :)   -  person Rolf    schedule 28.02.2016


Ответы (1)


imageRepWithContentsOfFile: — это фабричный метод. Согласно документации, он возвращает «инициализированный экземпляр подкласса NSImageRep или ноль, если данные изображения не могут быть прочитаны». Из NSImageRep.h: «Если отправлено в подкласс, делает это только для типов, понятных этому подклассу». Итак, вам нужно только привести результат к указанному типу:

NSBitmapImageRep *imgRep = (NSBitmapImageRep *)[NSBitmapImageRep imageRepWithContentsOfFile:filename];

Обратите внимание, что обычно вам не нужно создавать экземпляры NSBitmapImageRep самостоятельно, и вы можете использовать NSImage.

person Borys Verebskyi    schedule 28.02.2016
comment
Большое спасибо, это решило мою проблему. Как я уже писал ранее: я очень плохо знаком с объективом c и не знал об этой проблеме приведения. - person Rolf; 28.02.2016