3 Stimmen

Warum darf ich in einer Implementierung Methoden schreiben und verwenden, die nicht in der Header-Datei in Objective-C deklariert sind?

@interface SomeClass : NSObject
{
}
@end

@implementation SomeClass
-(void) awesomeMethod600
{
}
@end

Kein Fehler, und awesomeMethod600 funktioniert.

7voto

Alex Rozanski Punkte 37585

Die Methodendeklarationen in den Klassenschnittstellen sind für den Compiler da (um Warnungen zu unterdrücken), da die Methodensuche in Objective-C zur Laufzeit erfolgt, und no Kompilierzeit.

0voto

Amit Punkte 392

Perspx hat Recht.

Versuchen Sie, dies in XCode zu erstellen:

@implementation SomeClass
-(void)awesomeMethod {
    [self notAwesomeMethod];
}    

-(void)notAwesomeMethod {}
@end

Sie sollten eine Warnung sehen, die besagt SomeClass' reagiert möglicherweise nicht auf '-notAwesomeMethod'. . Versuchen Sie, die Reihenfolge der Methodendefinitionen umzukehren... kein Fehler, da notAwesomeMethod ist nun bereits definiert, so dass der Compiler darüber Bescheid weiß. Bei Klassenschnittstellen ist dies bereits im Vorfeld der Fall.

Dies ist auch ein nettes Verhalten, denn Sie können wählen, ob Sie nur die Klasse öffentlich Schnittstelle, und halten Sie alle internen privaten Methoden aus der .h fichier.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X