Czytałam się o pominięciem wiadomości Objective-C, aby uzyskać wydajność (nieistotne dla tej konkretnej kwestii), kiedy znalazłem ciekawy kawałek kodu:Jaki jest zakres funkcji c zdefiniowanej w ramach klasy cel-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
moje pytanie brzmi; przy korzystaniu z funkcji c, w ramach obiektu cel c, w jakim zakresie jest umieszczona funkcja c (cFibIMP w tym konkretnym przypadku)? Czy klasa "cel-c" zawiera funkcję c usuwającą zmianę nazwy-clash, czy też funkcja c jest po prostu wrzucona do globalnego zasięgu całego programu target-c?
, więc dodanie statycznego do deklaracji funkcji ograniczyłoby jego zakres do modułu? Czy ma to zastosowanie nawet wtedy, gdy ta statyczna deklaracja jest wprowadzana wewnętrznie do @ implementacji, a nie na zewnątrz (tj. Na początku pliku kodu źródłowego?) –