ARC所有权修饰符--__weak修饰符
来源:互联网 发布:p2p理财 知乎 编辑:程序博客网 时间:2024/06/05 20:07
ARC所有权修饰符–__weak修饰符
在上篇ARC所有权修饰符–__strong修饰符中,看起来通过__strong修饰符就可以完美的管理内存了,但是仅仅通过__strong修饰符是不能解决“循环引用”问题的。
循环引用容易发生内存泄漏。所谓的内存泄漏就是当废弃的对象在超出其生存周期后继续存在。
怎样才能避免循环引用呢?既然有strong,就应该有weak。也就是说,使用__weak修饰符可以避免循环引用。__weak与__strong相反,提供弱引用,弱引用不能持有对象实例。id __weak obj = [[nsobject alloc]init];//编译器会发生警告,(将自己生成并持有的对象赋值给附有__weak修饰符的变量obj),写成下面这样就可以了:{id obj = [[nsobject alloc]init];id __weak obj1 = job;
}
因为带__weak修饰符的变量(即弱引用)不持有对象,所以在超出其变量的作用域时,对象即被释放。将可能发生循环引用的类成员变量改成附有__weak修饰符的成员变量的话,就可以避免循环引用。__weak修饰符还有另一个有点,在持有某对象的弱引用时,若该对象被废弃,则此弱引用将自动失效且处于nil被赋值的状态(空弱引用)。
0 0
- ARC所有权修饰符--__weak修饰符
- ARC(一) 所有权修饰符
- ARC所有权修饰符---__strong修饰符
- iOS内存管理-所有权修饰符:__strong, __weak/__unsafe_unretained, __autoreleasing
- __weak 修饰符
- __weak修饰符
- __weak修饰符详解
- __weak 修饰符
- __weak修饰符
- ARC修饰符----__unsafe_unretained修饰符
- __strong、__weak、__unsafe_unretained和__autoreleasing修饰符
- __weak与__block修饰符的区别
- __weak与__block修饰符区别
- __block和__weak修饰符的区别
- __block和__weak修饰符的区别?
- stm32_HAL库中__weak修饰符
- iOS学习笔记(8)——ARC与所有权修饰符——strong,weak和autorelease
- iOS学习之——所有权修饰符
- windows 堆管理
- NYOJ 330 一个简单的数学题【思维】
- HDU 1527 取石子游戏 【威佐夫(Wythoff)博弈入门题】
- Notification 的使用
- 【CodeForces】599A - Patrick and Shopping(枚举)
- ARC所有权修饰符--__weak修饰符
- Codeforces 84B Magical Array
- 链队列java实现
- js与jquery的选项卡切换
- New Year and Days
- 漫步微积分九——乘法和除法法则
- HDU 1051 Wooden Sticks 木棍 贪心
- 广播初学笔记
- 【其他学习】聊一聊 cookie,做大项目必懂的知识点