Se dichiaro una proprietà come questa:Qual è il modo corretto per creare un setter personalizzato per una proprietà debole nell'obiettivo C?
@property(nonatomic,weak) Foo *someProperty;
e ho poi dichiarare un setter personalizzato in questo modo:
- (void)setSomeProperty:(Foo *)someProp {
_someProperty = someProp;
//...more custom stuff
}
c'è qualcosa di sbagliato in questo? Cioè, il compilatore dovrebbe sintetizzare automaticamente _someProperty ivar con il modificatore __weak, quindi è sufficiente eseguire l'assegnazione nel setter qui sopra, corretto?
+1 abbastanza semplice. –
Grazie mille! Quindi, a quanto ho capito, se stai scrivendo un setter personalizzato in ARC, l'unica volta che devi preoccuparti di "sovrascrivere" gli attributi nella dichiarazione di proprietà è se hai la proprietà dichiarata con atomico (nel qual caso avresti bisogno per @synchronize attorno all'impostazione di iVar) e copia (nel qual caso l'asserzione di assegnazione sarà simile a _someProperty = [someProp copy];) – adevine