Seit ich mit iOS-Apps und Ziel C arbeite, bin ich wirklich verwirrt über die verschiedenen Orte, an denen man Variablen deklarieren und definieren könnte. Einerseits haben wir den traditionellen C-Ansatz, andererseits haben wir die neuen ObjectiveC-Richtlinien, die zusätzlich OO hinzufügen. Könnten Sie mir helfen, die besten Praktiken und Situationen zu verstehen, in denen ich diese Speicherorte für meine Variablen verwenden und möglicherweise mein derzeitiges Verständnis korrigieren möchte?
Hier ist eine Beispielklasse (.h und .m):
#import <Foundation/Foundation.h>
// 1) What do I declare here?
@interface SampleClass : NSObject
{
// 2) ivar declarations
// Pretty much never used?
}
// 3) class-specific method / property declarations
@end
und
#import "SampleClass.h"
// 4) what goes here?
@interface SampleClass()
// 5) private interface, can define private methods and properties here
@end
@implementation SampleClass
{
// 6) define ivars
}
// 7) define methods and synthesize properties from both public and private
// interfaces
@end
- Mein Verständnis von 1 und 4 ist, dass es sich um dateibasierte Deklarationen und Definitionen im C-Stil handelt, die keinerlei Verständnis für das Konzept der Klasse haben und daher genau so verwendet werden müssen, wie sie in C verwendet würden. Ich habe sie gesehen wird zuvor für die Implementierung statischer variablenbasierter Singletons verwendet. Gibt es andere bequeme Verwendungszwecke, die mir fehlen?
- Ich gehe davon aus, dass Ivars außerhalb der @synthesize-Direktive fast vollständig auslaufen und daher größtenteils ignoriert werden können. Ist das der Fall?
- Zu 5: Warum sollte ich jemals Methoden in privaten Schnittstellen deklarieren wollen? Meine privaten Klassenmethoden scheinen ohne Deklaration in der Schnittstelle einwandfrei zu kompilieren. Ist es hauptsächlich für die Lesbarkeit?
Vielen Dank, Leute!