es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Dónde se define la función [noop:] de Objective-C?

En Swift, ¿cómo puedo probar si un selector dado es el selector noop:?

// Error del compilador: No se puede encontrar `noop` en score
override func doCommand(by selector: Selector) {
  if selector == #selector(noop(_:)) {
  }
}

Cuando se manejan eventos de teclado en una aplicación AppKit, se llamará a NSResponder.doCommand(by:) con un Selector. Si la combinación de teclas no se asigna a una acción conocida, entonces se devolverá el selector noop:.

En Objective-C, se puede probar esto con @selector(noop:), sin embargo, en Swift, si intenta usar #selector(noop(_:)), el compilador se queja de que no puede resolver ese selector. Cuando esto sucede, generalmente solo tiene que agregar el prefijo del clase a la que pertenece el selector, por ejemplo: #selector(NSResponder.moveLeft(_:)).

Sin embargo, no puedo encontrar dónde se define noop:. Ninguna cantidad de búsqueda a través de los archivos de encabezado revela una coincidencia adecuada.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que noop: no está definido como selector en el marco de trabajo de AppKit. Por lo tanto, no hay forma de probar si un determinado selector es el selector noop: en Swift. Una posible solución es definir un selector personalizado con un nombre único y probar con ese en su lugar.

Comments are closed.