Colección de citas famosas - Slogan de motivación - IOS modifica atributos privados y variables miembro (KVC)

IOS modifica atributos privados y variables miembro (KVC)

Modificar propiedades privadas es un escenario común en nuestro desarrollo diario. Por ejemplo, modifique las propiedades de una biblioteca de terceros, pero la biblioteca de terceros no expone esta propiedad en el archivo de encabezado. En términos generales, existen dos opciones para modificar atributos privados: KVC y tiempo de ejecución. Hoy no presentaré aquí los principios, sólo la práctica.

La idea general: heredar la clase a modificar, obtener el atributo o variable miembro a modificar, cambiar su valor y luego asignarlo a la clase.

El siguiente ejemplo hereda la clase principal ZXParentViewController a través de la subclase ZXSonViewController y lo demuestra en el método viewDidLoad.

La clase padre define nombres de propiedades privadas.

La subclase hereda la clase principal y es modificada por KVC.

La API utilizada en este momento se cambia de [setValue: forKey:] a [setValue:forKeyPath:].

La clase padre utiliza una de las clases personalizadas como atributo.

Las subclases se modifican mediante [setValue:forKeyPath:].

Cuando se modifican las variables miembro.

Subclase

Debido a que la estructura en sí no sigue el protocolo KVC, podemos convertirla a NSValue.

La clase padre utiliza enumeraciones como variables miembro.

Las subclases modifican las variables de los miembros de la clase principal a través de cinco pasos.

La captura de pantalla es la siguiente

Ver la copia impresa.

Los métodos para modificar propiedades privadas o variables miembro a través de KVC se enumeran básicamente. Sin embargo, debe tenerse en cuenta que KVC en sí está codificado, lo cual es fácil de operar y debe tener protección de seguridad. tomarse al usarlo.