Da quando ho iniziato a lavorare con le app iOS e l'obiettivo C sono rimasto davvero perplesso dalle diverse posizioni in cui si potrebbero dichiarare e definire variabili. Da un lato abbiamo il tradizionale approccio C, dall'altro abbiamo le nuove direttive ObjectiveC che aggiungono OO in cima a quello. Potreste aiutarmi a capire le migliori pratiche e le situazioni in cui vorrei utilizzare queste posizioni per le mie variabili e forse correggere la mia comprensione attuale?
Ecco una classe di esempio (.h e .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
e
#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
- La mia comprensione di 1 e 4 è che quelle sono dichiarazioni e definizioni basate su file in stile C che non hanno alcuna comprensione del concetto di classe, e quindi devono essere utilizzate esattamente come sarebbero usate in C. Le ho viste utilizzato per l'implementazione di singleton basati su variabili statiche prima. Ci sono altri usi convenienti che mi manca?
- La mia opinione dal lavoro con iOS è che gli ivar sono stati quasi completamente eliminati al di fuori della direttiva @synthesize e quindi possono essere per lo più ignorati. È così?
- Per quanto riguarda 5: perché dovrei mai voler dichiarare metodi in interfacce private? I miei metodi di classe privata sembrano compilarsi bene senza una dichiarazione nell'interfaccia. È principalmente per la leggibilità?
Grazie mille, gente!