首页 > 移动平台 > 详细

iOS ARC下循环引用的问题

时间:2014-03-14 13:01:53      阅读:578      评论:0      收藏:0      [点我收藏+]
bubuko.com,布布扣
strong:适用于OC对象,作用和非ARC中的retain作用相同,它修饰的成员变量为强指针类型
weak:适用于OC对象,作用和非ARC中的assign作用相同,修饰的成员变量为弱指针类型
assging:适用于非OC对象类型

在OC对象循环引用的时候一端为strong类型,另一段为weak类型

示例代码如下:
bubuko.com,布布扣
bubuko.com,布布扣
/****************************** 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;
}
bubuko.com,布布扣

main方法中代码的简单内存图如下:

bubuko.com,布布扣

iOS ARC下循环引用的问题,布布扣,bubuko.com

iOS ARC下循环引用的问题

原文:http://www.cnblogs.com/QM80/p/3599695.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!