09-05、ARC中的多个对象的循环引用的解决方案

参考:08-09、MRC中A对象与B对象的“循环retain”的解决方案

09-05、ARC中的多个对象的循环引用的解决方案_第1张图片
Snip20170926_70.png
09-05、ARC中的多个对象的循环引用的解决方案_第2张图片
Snip20170926_71.png
Person.h
#import 

@class Dog;

@interface Person : NSObject

// MRC, A对象想拥有B对象, 需要对B对象进行一次retain
//      A对象不用B对象了, 需要对B对象进行一次release
//      property的时候进行retain, dealloc的时候进行release


   // ARC, A对象想拥有B对象, 那么就需要用一个强指针指向B对象
//      A对象不用B对象了, 什么都不需要做, 编译器会自动帮我们做


// 在ARC中保存一个对象用strong, 相当于MRC中的retain
@property(nonatomic, strong)Dog *dog;

@end
Dog.h
  #import 

@class Person;
@interface Dog : NSObject

//@property(nonatomic, strong)Person *owner;
//@property(nonatomic, assign)Person *owner;
// 在ARC中如果保存对象不要用assign, 用weak
// assign是专门用于保存基本数据类型的, 如果保存对象用weak
@property(nonatomic, weak)Person *owner;
@end

你可能感兴趣的:(09-05、ARC中的多个对象的循环引用的解决方案)