В текущих производственных компиляторах по умолчанию (в случае без @synthesize
) ничего не делается, а затем предупреждает, если реализация не предоставлена.
@synthesize
автоматически в последнейверсии компилятора LLVM 2.0.
@dynamic
не требуется при самостоятельной реализации метода установки / получения.@dynamic
используется при динамическом предоставлении реализаций во время выполнения.То есть, @dynamic foo;
в сочетании с @property <type> foo;
заставит компилятор не предупреждать , если вы не предоставите реализацию -foo
и -setFoo:
.
Обратите внимание, что вы можететакже используйте @synthesize propertyName = instanceVariableName;
, чтобы использовать конкретную переменную экземпляра с другим именем в качестве резервного хранилища.
@property
в интерфейсе очень коротко для объявлений метода getter / setter.Он также содержит больше метаданных (сохранение, назначение и т. Д.), Которые используются компилятором во время @synthesize
.
. И, как всегда, свойство atomic
не очень помогает с безопасностью потока.