iOS no me grita cuando paso en NULL
o nil
al bloque de finalización en animateWithDuration:animations:completion:
, pero ¿eso significa que está bien? ¿O es mejor abrir un ^{ }
vacío?¿Está bien pasar NULL a un parámetro de bloque?
Respuesta
Esto está bien siempre que pueda confiar en que el código al que está pasando el nil
no intentará llamarlo como un bloque.
una rápida demostración:
typedef void (^GenericBlock)(void);
void useThisBlock(GenericBlock block){
block();
}
useThisBlock(^{NSLog(@"All okay.");});
useThisBlock(nil); // Compiles but crashes
El código interno debe comprobar el primer bloque: if(block) block();
En el caso del código UIKit, que debe estar bien.
Pasar nil
está bien, y en mi opinión produce un código de lectura más limpio.
Si no desea utilizar un bloque de finalización, en este caso también puede utilizar el método [UIView animateWithDuration:animations:]
.
Gracias, sé que hay un método sin bloque de animación. Mi pregunta es más acerca del bloqueo en sí mismo. Entonces, ¿por qué 'nil', no' NULL'? – pixelfreak
'nil' y' NULL' son equivalentes. Por convención, Objective-C normalmente usa 'nil' donde' NULL' se usa en C. – sho
que no es exactamente así en ARC. 'nil' significa objeto y se debe usar donde se espera' id', mientras que 'NULL' significa un puntero no válido no objeto y se debe usar donde' 'void *)' se espera. Eche un vistazo a [this] (http://stackoverflow.com/questions/557582/null-vs-nil-in-objective-c) pregunta para obtener más información. –
- 1. ¿Está bien pasar SQLCommand como parámetro?
- 2. ¿Está bien pasar parámetros a un método de Fábrica?
- 3. ¿Está bien pasar DataReaders a los constructores?
- 4. ¿Está bien pasar un identificador de ventana nula a ShellExecute?
- 5. Unboxing Null-Object a resultados largos en NullPointerException, ¿está bien?
- 6. ¿Está bien? Sincronizada (rosca), luego pase = null en el bloque sincronía
- 7. ¿Pasar NULL al parámetro de acceso URL SSRS?
- 8. ¿Está bien pasar una secuencia a varios métodos?
- 9. ¿Por qué pasar null a un método params da como resultado una matriz de parámetro nulo?
- 10. Ignorando un parámetro NULL en T-SQL
- 11. rieles pasar parámetro adicional a un modelo
- 12. JSF- pasar un parámetro a valuechangelistener
- 13. ¿Cómo puedo pasar los parámetros a un bloque Symfony2 Twig?
- 14. Una forma curiosa de pasar un parámetro a un método
- 15. Procedimiento almacenado NULL Parámetro
- 16. MVC: ¿pasar parámetro para ver?
- 17. pasar un valor NULL a DateTime campo en LINQ
- 18. cómo pasar el parámetro a jsp: incluir
- 19. Está llamando a setTimeout con un retraso negativo ¿está bien?
- 20. Pasar un objeto como parámetro a un servicio de Windows
- 21. ¿Cómo pasar un ArrayList a un parámetro de método varargs?
- 22. Qué parámetro 'longitud' debería pasar a SqlDataReader.GetBytes()
- 23. Bloque de paso Objective-C como parámetro
- 24. Ruby: ¿es posible pasar un bloque como un param como un bloque real a otra función?
- 25. Cómo pasar un parámetro opcional en ActionResult
- 26. Pasar un evento como un parámetro a un método
- 27. VB.NET - Pasar un evento como un parámetro
- 28. ¿Está bien lanzar un java.lang.Error?
- 29. ¿Cómo puedo pasar un parámetro en acción?
- 30. ¿Cómo pasar un parámetro a una función Javascript establecida dinámicamente?
"* En el caso del código UIKit, debería estar bien. *" ¿Se necesitan citaciones? – Manav
@Manav: No está equivocado, no hay forma de verificarlo (excepto que no se cuelga). –