2016-11-07 5 views
1

Я написал расширение, чтобы вернуть UIColor из шестнадцатеричной строки. Хотя это работает, я не совсем понимаю, цель этого куска кодаПутаница относительно NSScanner (сканера)

var rgbValue: UInt32 = 0 
Scanner(string: cleanHexStr).scanHexInt32(&rgbValue) 

могли бы вы предоставить некоторое представление/детальное понимание этого? Спасибо.

ответ

1

Первая часть создает экземпляр NSScanner для строки cleanHexString. (Сканеры привязаны к строке.)

Затем на этом сканере выполняется scanHexInt32(), чтобы получить целочисленное значение строкового представления. rgbValue является аргументом. (Указатель на него передан, что такое метод для аргументов в C. NSScanner - это класс Objective-C.)

+0

Так это сравнение двух значений? Итак, после создания экземпляра 'Scanner' из' cleanHexString', что именно делает 'scanHexInt32'? –

+0

Как я уже сказал: он сканирует прикрепленную строку для 32-разрядного целочисленного значения и возвращает результат в 'rgbValue'. Ничего не сравнивается. Зачем? –

+0

Так что он сканирует 'cleanHexStr' для 32-битного целого? Например, если я ввожу строку 'ffffff', значение' rbgValue' равно ** 16777215 ** согласно Xcode. Я не уверен, что означает это значение. Не могли бы вы уточнить? –