У меня есть фрагмент кода, который создает маску, используя альфа-канал изображения. До обновления до Mavericks все работало отлично, и я никогда не получал ни одного предупреждения или ошибки в консоли отладки Xcode. После обновления я получаю это предупреждение:
Неявное преобразование из типа перечисления "enum CGImageAlphaInfo" в другой тип перечисления "CGBitmapInfo" (он же "enum CGBitmapInfo")
Строка, помеченная как проблема:
CGBitmapContextCreate(alphaData, width, height, 8, rowBytes, NULL, kCGImageAlphaOnly);
Вот что говорится в документации для последнего аргумента (также известного как kCGImageAlphaOnly
):
bitmapInfo
Константы, которые указывают, должно ли растровое изображение содержать альфа-канал, относительное расположение альфа-канала в пикселе и информацию о том, являются ли компоненты пикселя значениями с плавающей запятой или целыми числами. Константы для указания информации об альфа-канале объявлены с типом
CGImageAlphaInfo
, но их можно безопасно передавать в этот параметр. Вы также можете передать другие константы, связанные с типомCGBitmapInfo
.
Как ни странно, в документации (Альфа-информация для изображений), в typedef Apple не указан вариант, который я использую. Однако в следующем списке терминов это так! Вот что он говорит:
kCGImageAlphaOnly
Данных о цвете нет, только альфа-канал. Доступно в OS X v10.3 и более поздних версиях. Заявлено вCGImage.h
.
Учитывая, что я хочу создать альфа-маску, меня не интересуют никакие данные о цвете, поэтому аргумент, который я использую, — единственный, который имеет смысл. Я не уверен, что он хочет, чтобы я сделал. Несмотря на это, метод работает, и все хорошо, когда приложение работает. С учетом сказанного, предупреждения действительно раздражают. Есть ли специальная директива CLANG, чтобы заставить его замолчать? Любая помощь будет оценена по достоинству. Ваше здоровье.