¿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.
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 selectornoop:
en Swift. Una posible solución es definir un selector personalizado con un nombre único y probar con ese en su lugar.