Вот информация, которую я знаю о свойствах переменных
- атомарный // по умолчанию
- неатомный
- strong = сохранить // по умолчанию
- слабый
- сохранить
- назначить // по умолчанию
- unsafe_unreolated
- копировать
- только чтение
- readwrite // по умолчанию
так что ниже есть подробная ссылка на статью, где вы можете найти вышеупомянутые все атрибуты, которые демонстративно вам помогут. Большое спасибо всем, кто дает здесь лучшие ответы !!
Атрибуты переменных свойств или модификаторы в iOS
01. strong (iOS4 = сохранить)
- он говорит: «Держите это в куче, пока я не перестану указывать на это» - другими словами «Я владелец, вы не можете освободить это до того, как прицельтесь, отлично с тем же самым «- Используйте сильный только в том случае, если вам нужно удержать предмет. - По умолчанию все переменные экземпляра и локальные переменные являются сильными указателями. - Обычно мы используем strong для UIViewControllers (родителей элемента пользовательского интерфейса) - strong используется с ARC и в основном помогает вам, не беспокоясь о счетчике сохраненных объектов. ARC автоматически освобождает его, когда вы закончите с ним. Использование ключевого слова strong означает, что объект принадлежит вам.
Пример:
@property (strong, nonatomic) ViewController *viewController;
@synthesize viewController;
02. weak (iOS4 = unsafe_unrehibited)
- он говорит: « Сохраняйте это, пока кто-то другой указывает на это сильно» - то же самое, что присваивать, не сохранять или освобождать - «Слабая» ссылка - это ссылка, которую вы не сохраняете. - Обычно мы используем weak для IBOutlets (дочерние элементы UIViewController). Это работает, потому что дочерний объект должен существовать только до тех пор, пока существует родительский объект. - слабая ссылка - это ссылка, которая не защищает объект, на который указывает ссылка, от сбора сборщиком мусора. - Слабое, по сути, присвоенное, несохраняемое свойство. За исключением случая, когда объект освобождается, слабый указатель автоматически устанавливается на ноль
Пример :
@property (weak, nonatomic) IBOutlet UIButton *myButton;
@synthesize myButton;
Объясните : Спасибо Би Джей Гомеру
Представьте, что наш объект - собака, и собака хочет убежать (быть освобожденной). Сильные указатели похожи на поводок для собаки. Пока собака привязана к поводку, она не убежит. Если пять человек прикрепят поводок к одной собаке (пять сильных указателей на один объект), то собака не убежит, пока не будут сняты все пять поводков. С другой стороны, слабые указатели похожи на маленьких детей, указывающих на собаку и говорящих: «Смотри! Собака!» Пока собака все еще на поводке, маленькие дети все еще видят собаку и будут указывать на нее. Однако как только все поводки отсоединены, собака убегает, сколько бы на нее ни указывали маленькие дети. Как только последний сильный указатель (привязка) больше не указывает на объект, объект будет освобожден, а все слабые указатели будут обнулены. Когда мы используем слабый? Единственный случай, когда вы захотите использовать weak, - это если вы хотите избежать циклов сохранения (например, родительский элемент сохраняет дочерний элемент, а дочерний элемент сохраняет родительский элемент, поэтому ни один из них никогда не освобождается).