------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
ARC 循环引用
/*
当两端循环引用的时候,解决方案
1> ARC
1端用strong,另一端用weak;
2> 非ARC
1端用retain,另一段用assign;
*/
#import <Foundation/Foundation.h>
@class Dog;
@interface Person : NSObject
@property (nonatomic,strong) Dog *dog;
@end
@implementation Person
- (void)dealloc
{
NSLog(@"Person is dealloc");
}
@end
#import <Foundation/Foundation.h>
@class Person;
@interface Dog : NSObject
@property (nonatomic,weak) Person *person;
@end
#import "Dog.h"
@implementation Dog
- (void)dealloc
{
NSLog(@"Dog is dealloc");
}
@end
#import <Foundation/Foundation.h>
#import "Person.h"
#import "Dog.h"
int main(int argc, const char * argv[]) {
Person *p = [[Person alloc] init];
Dog *d = [[Dog alloc] init];
p.dog = d;
d.person = p;
return 0;
}