Extensión de clase vs categoría de clase

Las extensiones de clase @interface Class () son mucho más poderosas y pueden inyectar variables en la clase. Las categorías @interface Class (Category)no pueden. ¿Qué otras diferencias existen y cuándo se debe usar una categoría en lugar de una extensión de clase?