objective-c ios arguments performselector

objective c - iOS performSelectorOnMainThread con mĂșltiples argumentos



objective-c arguments (3)

Cuando estás usando iOS> = 4, harías esto en su lugar:

dispatch_async(dispatch_get_main_queue(), ^{ [self doSomething:1 b:2 c:3 d:4 e:5]; });

Eso es como hacer waitUntilDone:NO . Si desea esperar hasta que finalice el método, utilice dispatch_sync lugar.

Me gustaría realizar un selector en el subproceso principal desde otro subproceso, pero el selector tiene varios argumentos, similar a esto:

-(void) doSomethingWith:(int) ab:(float)bc:(float)cd:(float)de:(float)e { //... }

¿Cómo puedo conseguir que esto funcione con performSelectorOnMainThread: withObject: waitUntilDone: :?

EDITAR

Me gustaría explicar por qué necesito esto.

Estoy trabajando con UIImageViews en el hilo principal, y hago los cálculos para ellos en otro hilo. Utilizo muchos cálculos, así que si hago todo en el hilo principal, la aplicación se retrasa. Sé que los elementos de la interfaz de usuario solo se pueden manipular en el subproceso principal, por eso me gustaría que funcionara de esta manera, para que el subproceso principal pueda escuchar eventos táctiles sin retrasos.


Tendrás que usar un NSInvocation

Cree el objeto, establezca el objetivo, el selector y los argumentos.
Entonces, use

[ invocationObject performSelectorOnMainThread: @selector( invoke ) withObject: nil, waitUntilDone: NO ];


puede pasar un objeto de tipo NSDictionary / NSArray con los argumentos requeridos.

y acepta el mismo tipo de objeto en tu función. luego, descomponer los valores y continuar con el procesamiento.

tiene que usar NSNumber para los valores numéricos para agregarlos a NSarray / NSDictionary y más adelante en su función, puede volver a convertirlos con intValue / floatValue etc.

mejor de dinero.