Qual è il modo corretto di lavorare con variabili di istanza (dichiarate sull'interfaccia), loro @property
e @synthesize
, quando si lavora nel progetto ARC? Quello che faccio è ora seguente:Modo corretto per utilizzare variabili di istanza/proprietà/sintetizzare con ARC
SomeClass.h:
@interface SomeClass : NSObject {
NSString *someString;
}
@property(nonatomic, copy) NSString* someString;
e SomeClass.m:
@implementation SomeClass
@synthesize someString;
- (void)someMethod {
self.someString = @"Foobar";
}
Il fatto è che ci sono altri approcci che funziona, come l'utilizzo di solo il @ proprietà:
SomeClass.h:
@interface SomeClass : NSObject
@property(nonatomic, copy) NSString* someString;
Accesso al someString
senza self
:
SomeClass.m:
@implementation SomeClass
@synthesize someString;
- (void)someMethod {
someString = @"Foobar";
}
ecc Sono nuovo di Objective-C, io sono abituato a Java. Qual è il modo corretto di lavorare con gli attributi allora? Capisco che i casi speciali avranno un comportamento speciale, ma quale è l'approccio migliore in generale? (di solito voglio accedere alla variabile dalla classe stessa e da "outside" e voglio che ARC funzioni ancora correttamente, ad esempio non devo preoccuparmi delle perdite di memoria)
Basta definire le proprietà. E se usi Xcode 4.5+, non hai nemmeno bisogno dell'istruzione sintetizzata. Questo è considerato come il modo corretto, poiché le proprietà creeranno automaticamente iVar. Se è necessario utilizzare un iVar, se in Xcode 4.5+, utilizzare "_" prima del nome della proprietà (poiché vengono creati automaticamente), in caso contrario, quindi crearli in questo modo: @synthesize variable = _variable; – Petar
@ pe60t0 La necessità di non utilizzare più l'istruzione '@ synthesize' è stata effettivamente introdotta con Xcode 4.4. –
Il mio male, non è possibile modificare il commento ora. – Petar