---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
循环引用
1>使用场景
对于循环依赖关系来说,比方A类引用B类,同时B类引用A类,可能造成,A和B类相互import头文件,即相互拷贝,这个是不允许的。
2>解决方案
一端用retain,一端用assign
3>实例代码
//Card.h
@class Person;
@interface Card : NSObject
@property (nonatomic, assign) Person *person;
@end
//Card.m
#import "Person.h"
@implementation Card
- (void)dealloc
{
NSlog(@"Card被销毁");
[super dealloc];
}
@end
//Person.h
@class Card;
@interface Person : NSObject
@property (nonatomic, retain) Card *card;
@end
//Person.m
#import "Card.h"
@implementation
- (void)dealloc
{
NSlog(@"Person被销毁");
[_card release];
[super dealloc];
}
@end
//main.m
int main()
{
//p-1
Person *p = [[Person alloc] init];
//c-1
Card *c = [[Card alloc] init];
//c-2
p.card = c;
//p-1
c.person = p;
//c-1
[c release];
//p-0,c-0
[p release];
return 0;
}
4>小零碎
①在.h文件中用@class来声明类,在.m文件中#import来包含该类的所有方法。
②循环引用(A,B类相互引用)的解决方案:一端用retain,一端用assign。
---------------------- ASP.Net+Unity开发、 .Net培训、期待与您交流! ----------------------详细请查看: www.itheima.com