main.m文件:atom
#import <Foundation/Foundation.h> #import "Person.h" #import "Dog.h" int main() { Person *p = [[Person alloc] init]; Dog *d = [[Dog alloc] init]; p.dog = d; d.person = p; return 0; }
#import "Dog.h" @implementation Dog - (void)dealloc { NSLog(@"Dog--dealloc"); } @end
#import "Person.h" @implementation Person - (void)dealloc { NSLog(@"Person--dealloc"); } @endDog.h文件:
#import <Foundation/Foundation.h> @class Person; @interface Dog : NSObject @property (nonatomic,strong) Person *person; @end
#import <Foundation/Foundation.h> @class Dog; @interface Person : NSObject @property (nonatomic, strong) Dog *dog; @end
对于上述main.m文件中红色部分“人养一条狗,狗有一个主人”,仔根据两个.h文件中部分,编译运行时会出现“人strong狗,狗strong人”的状况,致使p和d占用的内存没法被回收,即上图黄色部分不打印。解决办法为:spa
一端用strong,另外一端用weakcode
好比能够将Dog.h文件中strong改为weak,就能够解决循环strong 问题。内存
版权声明:本文为博主原创文章,未经博主容许不得转载。it