为了账号安全,请及时绑定邮箱和手机立即绑定

目标C中强与弱的区别

目标C中强与弱的区别

繁华开满天机 2019-06-29 14:57:45
目标C中强与弱的区别我是新来的,所以我的第一个问题是:.之间有什么区别?strong和weak在……里面@property指向对象的指针声明?还有,是什么nonatomic刻薄?
查看完整描述

3 回答

?
繁星coding

TA贡献1797条经验 获得超4个赞

强引用(在大多数情况下将使用该引用)意味着您希望“拥有”使用此属性/变量引用的对象。编译器将注意任何分配给该属性的对象都不会被销毁,只要您用强引用指向它。只有在将属性设置为nil该对象是否会被销毁(除非一个或多个其他对象也持有对其的强烈引用)。

相反,如果引用较弱,则表示不希望控制对象的生存期。您所引用的对象弱只存在,因为至少有一个其他对象持有对它的强引用。一旦不再是这种情况,该对象将被销毁,您的弱属性将自动设置为nil..IOS中最常见的弱引用例是:

  1. 委托属性,这些属性通常被弱引用以避免保留周期,以及

  2. 视图控制器的主视图的子视图/控件,因为这些视图已经被主视图强烈持有。

原子方法和非原子方法是指编译器为属性合成的getter和setter方法的线程安全性。原子(默认)告诉编译器使访问器方法线程安全(在访问Ival之前添加一个锁),而非原子方法则相反。非原子的优点是性能稍高。在iOS上,苹果公司几乎所有的属性都使用非原子技术,所以一般建议你也这样做。


查看完整回答
反对 回复 2019-06-29
?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

强壮:将传入值分配给它,它将保留传入值并释放实例变量的现有值。

瘦弱将传入的值分配给它而不保留它。

因此,基本的区别在于新变量的保留。一般说来,你想保留它,但在某些情况下,你不想要它,否则你会得到一个保留循环,无法释放内存,对象。例如。obj 1保留obj 2,obj 2保留obj 1。要解决这种情况,需要使用弱引用。


查看完整回答
反对 回复 2019-06-29
  • 3 回答
  • 0 关注
  • 522 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信