@implementation temp{
id _thing;
}
-(void) setThing: (id)what{
self->_thing = what;
}
temp *m1 = [temp new];
temp *m2 = [temp new];
m1.thing = m2;
m2.thing = m1;
此时就会出现弱连接的结构,解决方式是:_weak id _thing;
使用weak的原理是:在ARC中使用weak弱引用时,该对象会被及记录在一个暂存器列表上,当我们释放对象时会在暂存器列表进行查找,如果找到就会释放内存。所使用的指针就会被置为nil。
Strong是一个与weak相对应的属性
在我们所见到的UIkIt的应用中所有属性都是strong(也就是说strong是默认属性)。
retain:在内存储存中是count+1然后进行重新复制,就是说每次复制都会是ARC的计数器增加。
copy:是重新申请一个内存空间,然后count+1然后进行赋值。
assign:是清空赋值,然后进行复制。count没有加1(是默认属性)。
nonatomic:多线程安全,当多线程进行访问时访问器会对其进行加锁,防止在访问时进行改变同时也增加内存消耗。
atomic:多线程不安全,参照上面。
readonly&readwrite:readwrite(是默认属性)可以进行读写操作,readonly是只读。