Resumen 1 de la pregunta de la entrevista de IOS

1. La diferencia entre mvc y mvp y las ventajas y desventajas de su uso

La V en MVP se refiere a ViewController y View en iOS. MVP divide el ViewController de MVC: la parte de procesamiento lógico de los datos de la vista es P, y el resto del ViewController se fusiona con la Vista en V. La comunicación entre V y P se realiza mediante Protocolo.

MVP se da cuenta del desacoplamiento de cada módulo y tiene una mejor capacidad de prueba. Pero la cantidad total de código es mayor que MVC.
Además, iOS MVC es más adecuado para un desarrollo rápido, es decir, proyectos con tamaños de código más pequeños. Por lo tanto, cambiar la demostración de MVC simple a MVP parecerá torpe.

2. Una vez que iOS se empaqueta correctamente, volverá a parpadear y aparecerá una pantalla negra cuando se ejecute en iPhone

Uno es el error del certificado y el otro es que el dispositivo actual no está en la cuenta correspondiente del desarrollador.

3. Principio de implementación del diccionario de OC

Tabla de picadillo:

Hash: 1 、 Algoritmo hash 2 、 md5 3 、 SHA1 ...

Puede escribir un número hash usted mismo, ordenar la clave del nombre por 26 primeras letras, puede usar 13 cuadrículas para el almacenamiento, si la primera letra es la misma, puede agregar un incremento, H = (H (clave) + d) Mod m, d parte de 1 y modula toda la cantidad m = 13, haciendo una operación de aumento. En la práctica, si hay menos repeticiones en la cuadrícula, mejor será el algoritmo. Cuanto mayor sea la eficiencia.

4. La diferencia entre el mecanismo de envío de mensajes y el mecanismo de reenvío de mensajes en iOS

Mecanismo de envío de mensajes:

La llamada de función de OC se convierte en el envío del mensaje. Pertenece al proceso de llamada dinámica. No es posible decidir qué función llamar realmente durante la compilación (resulta que OC puede llamar a cualquier función en la fase de compilación, incluso si esta función no está implementada, no informará de un error siempre que se declare. El lenguaje C informará de un error durante la fase de compilación). Solo cuando se esté ejecutando la función correspondiente se encontrará y se llamará de acuerdo con el nombre de la función.

Mecanismo de reenvío de mensajes:

1. Etapa de procesamiento del análisis del método de resolución del método
2. Avance rápido Etapa de avance rápido
3. Reenvío normal Etapa de envío regular

5. Comunicación entre ancestros 

Hay muchas soluciones de componentes discutidas en la industria de iOS, en general hay tres.

 

  • Esquema de registro de protocolo
  • Esquema de registro de URL
  • Plan de llamadas en tiempo de ejecución de Target-Action

Solución MGJRoute

Los componentes de la ruta del programa de registro de URL de Mushroom Street de la aplicación han dejado muy claro que puede pasar al

principio:

Registre el servicio a través de la URL, otros lugares a través de la URL, obtenga el marco del servicio y mantenga un formulario de bloqueo de URL

caracteristicas:

  • El costo de mantenimiento de la URL es alto, decodificación dura
  • Los servicios se pueden llamar / registrar en cualquier lugar dentro del componente, no es necesario unificar los servicios de interfaz del componente
  • Cada componente empresarial debe basarse en este marco

6. ¿Cómo limpia SDWebImage el caché?

1. Eliminar según el orden cronológico y eliminar después de 7 días.

2. Guarde los que no fueron eliminados antes en orden cronológico y elimínelos de acuerdo con el caché máximo personalizado hasta la mitad del caché máximo.

Cálculo de caché, su unidad es byte

[[[SDWebImageManager sharedManager] imageCache]getSize];

Número de imágenes almacenadas en caché

[[[SDWebImageManager sharedManager] imageCache] getDiskCount];

Limpieza de caché, el primero es el caché de memoria, el segundo es el caché del disco duro

[[[SDWebImageManager sharedManager] imageCache] clearMemory];  
[[[SDWebImageManager sharedManager] imageCache] clearDisk];

7. ¿Cómo maneja SDWebImage la advertencia de memoria recibida?

AutoPurgeCache hereda de NSCache para borrar automáticamente la caché y llamar al método removeAllObjects de NSCache.

8. ¿Cómo calcular el costo de las imágenes en SDWebImage?

Tamaño del caché

/**
 * Get the size used by the disk cache
 */
- (NSUInteger)getSize;
// 注意:返回值单位为字节
// 具体实现
- (NSUInteger)getSize {
    __block NSUInteger size = 0;
    dispatch_sync(self.ioQueue, ^{
        NSDirectoryEnumerator *fileEnumerator = [_fileManager enumeratorAtPath:self.diskCachePath];
        for (NSString *fileName in fileEnumerator) {
            NSString *filePath = [self.diskCachePath stringByAppendingPathComponent:fileName];
            NSDictionary *attrs = [[NSFileManager defaultManager] attributesOfItemAtPath:filePath error:nil];
            size += [attrs fileSize];
        }
    });
    return size;
}

9. ¿Cuál es la diferencia entre claro y limpio en SDWebImage?
 

claro

   eliminar todos

limpiar

   Parcialmente eliminado 

  1. Eliminar según el orden cronológico y eliminar después de 7 días.

   2. Guarde los que no fueron eliminados antes en orden cronológico y elimínelos de acuerdo con el caché máximo personalizado hasta la mitad del caché máximo.

 

 

Supongo que te gusta

Origin blog.csdn.net/Draven__/article/details/90110217
Recomendado
Clasificación