Stavo leggendo su circa bypassando messaggistica di Objective-C per ottenere prestazioni (irrilevante per questa specifica questione) quando ho trovato un po 'interessante di codice:Qual è l'ambito di una funzione c definita all'interno della classe obiettivo-c?
#import <Cocoa/Cocoa.h>
@interface Fib : NSObject { }
- (long long) cFib: (NSUInteger) number;
@end
@implementation Fib
// c implementation of fib
long long cFibIMP(NSUInteger number)
{
return (number < 3) ? 1 : cFib(number - 1) + cFib(number - 2);
}
// method wrapper for c implementation of fib
- (long long) cFib: (NSUInteger) number
{
return cFibIMP(number);
}
@end
La mia domanda è; quando si usa la funzione c, all'interno di un oggetto obiettivo-c, in quale ambito si trova la funzione c (cFibIMP in questo caso particolare)? La classe dell'obiettivo-c incapsula la funzione c rimuovendo il cambiamento del nome-scontro o la funzione c è semplicemente scaricata nello scopo globale dell'intero programma obiettivo-c?
quindi la preposizione statica della dichiarazione di funzione limiterebbe quindi l'ambito al modulo? Questo vale anche se la dichiarazione statica è resa interna alla @implementation anziché essere resa esterna (vale a dire all'inizio del file del codice sorgente?) –