Может ли CGImage, созданный из файла, иметь значение null

63
6

Может ли image.CGImage когда-либо возвращать значение null если UIImage создавался из файла или из пакета?

UIImage image = UIImage.FromFile(name);
// or
UIImage image = UIImage.FromBundle(name);
// image.CGImage == null?

спросил(а) 2021-01-25T18:54:37+03:00 4 месяца, 3 недели назад
1
Решение
63

В общем случае, если UIImage не является null, CGImage также будет null. Есть несколько случаев, когда это не так (поясняется в этом ответе), но это не относится к методам, которые вы используете.

UIImage может быть null (и поэтому UIImage.CGImage также будет null), если указанное изображение не может быть найдено. Как вы можете видеть из документов, возврат будет равен nil (null в С#). Это относится к обоим методам.


FromBundle привязан к imageNamed: - docs here

FromFile привязан к imageWithContentsOfFile: - docs here

ответил(а) 2021-01-25T18:54:37+03:00 4 месяца, 3 недели назад
45

Thanx @BytesGuy за помощью. По его словам, UIImage.FromFile и UIImage.FromBundle не могут вернуть UIImage с null CGImage.

Некоторая коррекция для его ответа:

UIImage может быть null (и поэтому UIImage.CGImage также будет null)

Это неверно, если UIImage имеет значение null, UIImage.CGImage будет NullReferenceException (не возвращает null).

Также в Xamarin.iOS можно получить null CGImage если UIImage был удален:

UIImage image = UIImage.FromFile(name);
image.Dispose();
// now image.CGImage is null

ответил(а) 2021-01-25T18:54:37+03:00 4 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема