alloc - это селектор класса (например, называется like)
[NSObject alloc]
Возвращает неинициализированный указатель типа NSObject *.
Чтобы завершить инициализацию, вы должны вызвать соответствующий назначенный инициализатор для самого экземпляра :
[[NSObject alloc] init]
Возвращает полезный указатель NSObject *.
Новое в основном делает alloc -> init, за исключением того, что оно вызывается непосредственно на уровне класса:
NSObject* aObj = [NSObject new]
NSObject* aObj = [[NSObject alloc] init]
похожи.
Неатомарное свойство означает, что когда свойство будет записано (например, во время вызова набора), не будет добавлена блокировка к переменной, синтезированной этим свойством (это означает, что @synchronize не тратит слишком много времени).
Так что, если ваше свойство не будет изменяться разными потоками одновременно, вы можете смело устанавливать его неатомным.
Свойство copy означает, что при изменении этого свойства, например:
aObj.copyProperty = otherValue
Переменная copyProperty отправит сигнал copyWithZone: объекту otherValue .
Другими словами, если ваш copyProperty совместим с протоколом NSCopying , он в конечном итоге будет иметь те же свойства, что и otherValue , но будет иметь свой собственный адрес и сохранить счет и, следовательно, находиться в совершенно другой части памяти, как было otherValue .
В основном copyProperty будет занимать столько же памяти места, сколько otherValue .
Назначение свойства означает, что когда вы делаете:
aObj.prop = aProperty
Переменная, синтезируемая свойством prop , будет напрямую присвоена aProperty, что означает, что они будут иметь точный тот же адрес И сохранят количество .
Нет дополнительного пространства памяти занято при использовании команды assign.
Надеюсь, это поможет вам. Для получения дополнительной информации, пожалуйста, прочитайте Документация по управлению памятью Apple