ARC 的循环引用

#import <Foundation/Foundation.h>

#import "Person.h"

#import "Dog.h"

 

/*

 当两端循环引用的时候,解决方案:

 1> ARC

 1端用strong,另1端用weak

 

 2> 非ARC

 1端用retain,另1端用assign

 */

 

int main()

{

    Person *p = [[Person alloc] init];

    

    

    Dog *d = [[Dog alloc] init];

    p.dog = d;

    d.person = p;

 

    return 0;

}

 

#import <Foundation/Foundation.h>

 

@class Person;

 

@interface Dog : NSObject

 

@property (nonatomic, weak) Person *person;

 

@end

#import "Dog.h"

 

@implementation Dog

- (void)dealloc

{

    NSLog(@"Dog--dealloc");

}

@end

 */

#import <Foundation/Foundation.h>

 

@class Dog;

 

@interface Person : NSObject

 

@property (nonatomic, strong) Dog *dog;

 

@end

 

#import "Person.h"

 

@implementation Person

 

- (void)dealloc

{

    NSLog(@"Person--dealloc");

}

 

@end

posted @ 2016-03-28 11:54  lance.xiang  阅读(70)  评论(0)    收藏  举报