UIColor e CIColor como eles se comparam e qual é o objetivo de ter dois deles?

Recentemente, encontrei algum código em que a tentativa de obter a propriedade CIColor de um UIColor falha. O UIColor foi inicializado como uma simples [UIColor blackColor] e a tentativa de obter o CIColor disso gerou uma exceção.

CIColor *aCIColor = [[UIColor blackColor] CIColor]; //fails

Qual é a diferença entre CIColor e UIColor e por que isso acontece?

questionAnswers(4)

yourAnswerToTheQuestion