Encontré una palabra clave extraña en NSObject.h
- (oneway void)release;
Busqué en la web y descubrí que se relaciona con el paso de mensajes asincrónico, que se ve similar al paso de mensajes de Erlang.
Parece que esto puede hacer muchas cosas interesantes. ¿Cuáles son algunos buenos casos de uso de esta palabra clave?
objective-c
syntax
keyword
use-case
eonil
fuente
fuente
oneway void
es una de esas hermosas metáforas accidentales que a veces vemos en la codificación, en este caso de la muerte. "Si hay algo al otro lado, no nos lo digas".Respuestas:
oneway
se utiliza con la API de objetos distribuidos, que permite el uso de objetos objetivo-c entre diferentes subprocesos o aplicaciones. Le dice al sistema que no debe bloquear el hilo de llamada hasta que el método regrese. Sin él, la persona que llama se bloqueará, aunque el tipo de retorno del método sea nulo. Obviamente, nunca se usa con otra cosa que no sea void, ya que hacerlo significaría que el método devuelve algo, pero la persona que llama no lo obtiene.Para obtener más información sobre los objetos distribuidos, consulte Cocoa Conceptual DistrObjects .
fuente
Según la documentación de Apple, oneway solo se usa para objetos distribuidos (y no para subprocesos múltiples).
El modificador unidireccional solo se usa si el objeto es remoto. En este caso, la llamada de liberación puede regresar de forma asincrónica (antes de que el método haya terminado). En una red tiene sentido porque esperar un mensaje de respuesta puede llevar un tiempo.
El método de liberación no tiene valor de retorno y, por lo tanto, la llamada se puede ejecutar de forma asincrónica. Por el contrario, conservar y liberar automáticamente devuelve una identificación y, por lo tanto, tenemos que esperar a que el mensaje de devolución se transfiera a través de la red.
fuente
oneway
palabra clave hace que el mensaje no bloquee el hilo de llamada mientras se ejecuta el método llamado, eso hace que el método llamado se ejecute en un segundo hilo. ¿No es eso una multitarea (en su forma más simple)? ¿Puedo usar esto para separar algunas operaciones pequeñas rápidamente (sin mucho esfuerzo) a otro hilo? Muchas gracias.- (oneway void) release
entonces? No está en otra máquina o proceso.one way
a un método significadon't wait for the method to complete and return anything. block it if there is any n/w trafic or so.
¿Tengo sentido?