Recentemente, tentei compilar um projeto antigo do Xcode (que costumava compilar muito bem) e agora estou vendo muitos erros deste formulário:
error: writable atomic property 'someProperty' cannot pair a synthesized setter/getter with a user defined setter/getter
O padrão de código que causa esses erros sempre se parece com isso:
// Interface:
@property (retain) NSObject * someProperty;
// Implementation:
@synthesize someProperty; // to provide the getter
- (void)setSomeProperty:(NSObject *)newValue
{
//..
}
Eu posso ver por que o erro está sendo gerado. Eu digo ao compilador para sintetizar meus acessadores de propriedades (getter e setter) e, imediatamente depois, eu substituo o setter manualmente. Esse código sempre cheirava um pouco.
Então, qual é a maneira correta de fazer isso? Se eu usar em @dynamic
vez de @synthesize
, terei que escrever o getter também. Este é o único caminho?
atomic
propriedades? No caso de propriedades atômicas, pode ser uma boa idéia manter o par getter / setter sincronizado em relação à estratégia de bloqueio. Isso é difícil se uma parte é sintetizada enquanto a outra é um código personalizado.