iOS ARC下循环引用的问题 -举例说明strong和weak的区别
2014-03-14 02:15
615 查看
strong:适用于OC对象,作用和非ARC中的retain作用相同,它修饰的成员变量为强指针类型 weak:适用于OC对象,作用和非ARC中的assign作用相同,修饰的成员变量为弱指针类型 assign:适用于非OC对象类型 在OC对象循环引用的时候一端为strong类型,另一段为weak类型
示例代码如下:
/****************************** Teacher.h文件 ***********************************/ #import <Foundation/Foundation.h> @class Student; @interface Teacher : NSObject @property (nonatomic,strong) Student *student; @property (nonatomic,strong) NSString *teacherName; @end /****************************** Teacher.m文件 ***********************************/ #import "Teacher.h" #import "Student.h" @implementation Teacher - (void)dealloc { NSLog(@"叫%@的Teacher对象被销毁了",_teacherName); } @end /****************************** Student.h文件 ***********************************/ #import <Foundation/Foundation.h> @class Teacher; @interface Student : NSObject @property (nonatomic,weak) Teacher *teahcher; @property (nonatomic,strong) NSStirng *studentName; @end /****************************** Student.m文件 ***********************************/ #import "Student.h" #import "Teacher.h" @implementation Student - (void)dealloc { NSLog(@"叫%@的Student对象被销毁了",_stuName); } @end /****************************** main.m文件 ***********************************/ #import <Foundation/Foundation.h> #import "Teacher.h" #import "Student.h" int main(int argc, const char * argv[]) { Teacher *teacher = [[Teacher alloc] init]; teacher.teacherName = @"张老师"; Student *student = [[Student alloc] init]; student.stuName = @"李同学"; // Student类对象中的Teacher属性为弱引用 student.teahcher = teacher; // Teacher类对象中的Student属性为强引用 teacher.student = student; return 0; }
main方法中代码的简单内存图如下:
![](http://images.cnitblog.com/i/402471/201403/140206235489699.png)
相关文章推荐
- 【IOS学习基础】weak和strong、懒加载、循环引用
- iOS中Block的引用循环问题 (ARC & non-ARC)
- iOS ARC strong 和 weak的区别
- 初学iOS,刚看到控件的strong&weak问题,如果答的不对还请指正。首先有一点,在OC中,如果对象没有强引用,就会被自动释放,那么为什么控件还可以设为weak?
- 在ios开发中,ARC的循环引用问题和解决办法
- [iOS]ARC下循环引用的问题
- [iOS]ARC下循环引用的问题
- IOS开发--循环引用问题,普通控件为什么用weak,代理为什么用weak,block内用到外面的东
- 【4】iOS ARC学习笔记——strong、weak区别
- [iOS]ARC下循环引用的问题
- [iOS]ARC下循环引用的问题
- iOS ARC内存管理循环引用的问题
- 初学iOS,刚看到控件的strong&weak问题,如果答的不对还请指正。首先有一点,在OC中,如果对象没有强引用,就会被自动释放,那么为什么控件还可以设为weak?
- iOS: ARC和非ARC下使用Block与循环引用问题
- iOS_assign,retain,weak,strong的引用计数区别(附代码示例)
- [iOS]ARC下循环引用的问题
- iOS开发笔记之五十七——__weak与__strong是如何解决循环引用的
- IOS-48-解决开发中自定义控件在不同型号手机上不能显示的问题 (区别在于iOS修改了weak、strong属性)
- [iOS]ARC下循环引用的问题
- [IOS]ARC下循环引用的问题