对象指针的@property声明中强属性和弱属性的区别是什么?
还有,非原子是什么意思?
对象指针的@property声明中强属性和弱属性的区别是什么?
还有,非原子是什么意思?
当前回答
一个虚假的回答:-
我想上面的答案已经给出了解释,所以我只想告诉你在哪里使用STRONG和在哪里使用WEAK:
弱的用法:- 1. 代表 2. 网点 3.子视图 4. 控制等。
Strong的用法:- 保留所有不包含在WEAK中的地方。
其他回答
强弱,这些关键字围绕着Objective-C中的对象所有权展开
什么是对象所有权?
指针变量意味着它们所指向的对象的所有权。
当一个方法(或函数)有一个指向一个对象的局部变量时,我们称这个变量拥有所指向的对象。 当一个对象有一个指向另一个对象的实例变量时,具有指针的对象被称为拥有被指向的对象。
每当指针变量指向一个对象时,该对象就有一个所有者,并且将保持活动状态。这就是所谓的强参考。
变量可以选择不拥有它所指向的对象。不拥有对象所有权的变量称为弱引用。
有一个详细的解释在这里揭秘@属性和属性
Strong是默认值。一个对象只要有一个强指针指向它,它就会保持“活动”。
Weak指定一个引用,该引用不保持被引用对象的活动状态。当没有对对象的强引用时,弱引用被设置为nil。
从气球的角度考虑强引用和弱引用可能会有所帮助。
只要至少有一个人抓住系在气球上的绳子,气球就不会飞走。持有字符串的人数是保留计数。当没有人抓住绳子时,气球就会飞走(dealloc)。许多人都可以拥有同一个气球的绳子。您可以通过强引用和弱引用在被引用的对象上获取/设置属性和调用方法。
强引用就像抓住气球上的一根绳子。只要你抓住系在气球上的绳子,它就不会飞走。
一个弱的参考就像在看气球。你可以看到它,访问它的属性,调用它的方法,但你没有那个气球的字符串。如果每个人都松开绳子,气球就飞走了,你就再也碰不到它了。
强:主要用于属性,我们用来从/发送数据到另一个类。 弱:通常所有的出口,连接从接口弱类型。
原子的:这种类型的属性在不希望将我们的出口或对象共享到同时存在的不同线程的情况下使用。换句话说,原子实例使我们的属性一次处理一个线程。 希望对你们有帮助。
在这里,苹果文档用不同的例子解释了弱属性和强属性的区别:
https://developer.apple.com/library/ios/documentation/cocoa/conceptual/ProgrammingWithObjectiveC/EncapsulatingData/EncapsulatingData.html#//apple_ref/doc/uid/TP40011210-CH5-SW3
在这里,在这个博客作者收集了所有的属性在同一个地方。这将有助于比较属性特征:
http://rdcworld-iphone.blogspot.in/2012/12/variable-property-attributes-or.html