Sì! In Objective-C, i puntatori di funzione sono chiamati selettori. Se è stato un metodo definito in questo modo:
- (void)myFunctionWithObject:(NSObject*)obj otherObject:(NSNumber*)obj2
{
}
Il selettore è dichiarato così:
@selector(myFunctionWithObject:otherObject:)
Per eseguire un selettore su un oggetto, è possibile utilizzare:
[object performSelector:@selector(myFunction)];
o
[object performSelector:@selector(myFunctionTakingParameter:) withObject: o];
Il se Il tipo di dati del lettore è particolarmente utile per thread e timer, in cui è possibile inviare un thread e fornire un selettore al messaggio che si desidera richiamare. Se è necessario creare una serie di selettori (o una tabella di distribuzione) o se è necessario richiamare selettori con più parametri, è possibile utilizzare la classe NSInvocation. Fornisce un wrapper per un selettore e consente di specificare argomenti reali.
Si tenga presente che Objective-C è già basato su una tabella di invio del metodo completamente dinamica. Sembra che mantenere i puntatori di funzione usando i selettori funzionerà bene per te se hai solo bisogno di un riferimento a una funzione, però.
fonte
2009-07-05 05:04:28
Oh, giusto! Jason, grazie mille! –