Ich lese bis zu Objective-C Messaging-Umgehung Leistung (irrelevant für diese spezifische Frage) zu gewinnen, wenn ich ein interessantes Stück Code gefunden:Was ist der Umfang einer c-Funktion innerhalb der objective-c-Klasse definiert?
#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
Meine Frage ist; Wird bei Verwendung von c function innerhalb eines Objekts "objective-c" in welchen Bereich die c-Funktion (cFibIMP in diesem speziellen Fall) eingefügt? Verkapselt die objective-c-Klasse die c-Funktion, die die Änderung von name-clash entfernt, oder wird die c-Funktion einfach in den globalen Bereich des gesamten Ziel-c-Programms geworfen?
also vor der statischen Deklaration der Funktion Deklaration würde es den Umfang auf das Modul dann einschränken? Trifft dies zu, obwohl diese statische Deklaration innerhalb der @ Implementierung vorgenommen wird und nicht im Freien (d. H. Am Anfang der Quellcodedatei)? –