在ARC中引入了strong和weak,如果你说weak=assign就错了
查了很多资料发现weak和assign最大的不同就是,weak可以自动指向nil,但是assign没有这个功能。
看图说话:
如图,就是我们常用的代理类型(初始化的时候默认是strong类型哟),我们想在A类中对B类的实例化对象进行管理(初始化和销毁),还想把A的指针给B
如果代理用weak,那么等B类销毁后在B中指向A类的weak指针就自动指向空了(也就是说在不是人为的情况下,weak指针的生命周期和B类是相同的)
如果代理用assign,如果不能在B类销毁前提前把指针指向nil,那么是不是要出问题了呀,会crash的哟,你可以试试
具体在哪个类里面销毁delegate呢,当然是dealloc中了呀(如果不知道的就赶紧去恶补一下VC的生命周期去吧)
希望能帮助迷茫的人走出困境~不用谢,我叫雷锋~
以上是我个人的理解,如果有不对的地方欢迎指出~
本文详细解析了Objective-C中的ARC机制下weak和assign两种指针类型的区别,重点在于弱引用(weak)如何在对象销毁后自动变为nil,而强引用(assign)则在对象销毁时不自动改变。通过实例演示了在代理模式中使用weak指针的优势,避免了内存泄漏的风险。
5861

被折叠的 条评论
为什么被折叠?



