Why don't properties get automatically synthesized

前端 未结 5 990
一向
一向 2021-01-06 07:32

maybe this is a silly question. Every time I make a @property I have to @synthesize it. But this makes no sense the only thing you can do with a

5条回答
  •  野趣味
    野趣味 (楼主)
    2021-01-06 08:38

    In the current production compilers, the default -- the case without @synthesize -- is to do nothing and then warn if an implementation isn't provided.

    @synthesize is automatic in the latest versions of the LLVM 2.0 compiler.

    @dynamic is not required when implementing the setter/getter yourself. @dynamic is used when dynamically providing the implementations at runtime. That is, @dynamic foo; combined with @property foo; will cause the compiler not to warn if you don't provide a -foo and -setFoo: implementation.

    Note that you can also use @synthesize propertyName = instanceVariableName; to use a specific, differently named, instance variable as the backing store.

    @property in the interface very much is short hand for the getter/setter method declarations. It also carries more metadata (retain, assign, etc..) that is leveraged by the compiler during @synthesize.

    And, as always, an atomic property doesn't really help with thread safety.

提交回复
热议问题