Mar*_*sov 301 objective-c
我是Obj-C的新手,所以我的第一个问题是:
之间有什么区别strong
,并weak
在@property
对象的指针的声明?
还有什么nonatomic
意思呢?
MJN*_*MJN 695
考虑气球方面的强弱参考可能会有所帮助.
只要至少有一个人握住附着在其上的绳子,气球就不会飞走.持有字符串的人数是保留计数.当没有人抓住绳子时,气球会飞走(dealloc).许多人可以使用同一个气球的字符串.您可以使用强引用和弱引用来获取/设置属性并在引用的对象上调用方法.
一个强大的参考就像保持一个字符串到那个气球.只要您抓住连接到气球的绳子,它就不会飞走.
弱参考就像看气球一样.你可以看到它,访问它的属性,调用它的方法,但你没有该气球的字符串.如果每个人都抓住绳子放开,气球飞走了,你再也无法进入了.
Ole*_*ann 635
强引用(在大多数情况下将使用)意味着您希望"拥有"使用此属性/变量引用的对象.只要您使用强引用指向它,编译器就会注意您分配给此属性的任何对象都不会被销毁.只有将属性设置为nil
将导致对象被销毁(除非一个或多个其他对象也拥有对它的强引用).
相反,使用弱引用表示您不希望控制对象的生命周期.您引用弱的对象只会继续存在,因为至少有一个其他对象对它有强烈的引用.一旦不再是这种情况,对象就会被破坏,你的弱属性将自动设置为nil
.iOS中弱引用的最常见用例是:
委托属性,通常被弱引用以避免保留周期,以及
视图控制器主视图的子视图/控件,因为主视图已经强烈保存了这些视图.
原子与非原子是指编译器为属性合成的getter和setter方法的线程安全性.atomic(默认值)告诉编译器使访问器方法成为线程安全的(通过在访问ivar之前添加一个锁),而非原子操作则相反.非原子的优点是性能略高.在iOS上,Apple几乎所有属性都使用非原子,因此一般建议您也可以这样做.
Pfi*_*itz 23
strong:为其分配传入值,它将保留传入值并释放实例变量的现有值
weak:将传入值分配给它而不保留它.
所以基本的区别在于保留新变量.通常你想保留它,但有些情况下你不想拥有它,否则你会得到一个保留周期而无法释放对象的内存.例如.obj1保留obj2,obj2保留obj1.要解决这种情况,请使用弱引用.
shu*_*hra 12
假答案: -
我想在上面的答案中给出了解释,所以我要告诉你在哪里使用STRONG
以及在哪里使用WEAK
:
使用Weak
: -
1.代表2.出口3.子目录4.控制等
使用Strong
: -
保留在任何未包含的地方WEAK
.
强和弱,这些关键字围绕对象所有权在Objective-C
什么是对象所有权?
指针变量意味着它们指向的对象的所有权.
无论何时指针变量指向一个对象,该对象都有一个所有者并将保持活跃状态.这被称为强有力的参考.
变量可以选择不取得它指向的对象的所有权.不取得对象所有权的变量称为弱引用.
在这里寻找详细的解释Demystifying @property和属性
在这里,Apple文档使用各种示例解释了弱属性和强属性之间的区别:
在这里,作者已经在同一个地方收集了所有属性.它将有助于比较属性特征:
http://rdcworld-iphone.blogspot.in/2012/12/variable-property-attributes-or.html
归档时间: |
|
查看次数: |
162537 次 |
最近记录: |