A partire da clang 3.2 (circa febbraio 2012), "default synthesis" (o "sintesi proprietà auto") delle proprietà Objective-C viene fornita per impostazione predefinita. È essenzialmente come descritto nel post del blog che hai letto in origine: http://www.mcubedsw.com/blog/index.php/site/comments/new_objective-c_features/ (eccetto che quel post descrive la funzionalità come "abilitata, quindi disabilitata"; non so se questo è un problema con Xcode o se gli sviluppatori clang stessi sono tornati indietro e avanti sulla domanda).
Per quanto ne so, l'unico caso in cui le proprietà saranno non di default sintetizzate in clang 3.2 è quando quelle proprietà sono state ereditate da un protocollo. Ecco un esempio:
#import <Foundation/Foundation.h>
@protocol P
@property int finicky;
@end
@interface A : NSObject <P>
@property int easygoing;
@end
@implementation A
@end
int main() { A *a = [A new]; a.easygoing = 0; a.finicky = 1; }
Se compilate questo esempio, si otterrà un avvertimento:
test.m:11:17: warning: auto property synthesis will not synthesize property
declared in a protocol [-Wobjc-protocol-property-synthesis]
@implementation A
^
test.m:4:15: note: property declared here
@property int finicky;
^
1 warning generated.
e se lo si esegue, si otterrà un errore dal runtime:
objc[45820]: A: Does not recognize selector forward:: (while forwarding setFinicky:)
Illegal instruction: 4
Avete un collegamento per cui @synthesize è descritto come non necessario? – bneely
Forse ha visto alcune informazioni sulla XDA 4.4 attualmente sotto la NDA e si è confuso sui numeri di versione. –
@bneely ha aggiunto un collegamento. Forse sto fraintendendo "@synthesize è automatico nelle ultime versioni del compilatore LLVM 2.0". – SundayMonday