循环引用的问题...
来源:互联网 发布:新东方少儿编程培训 编辑:程序博客网 时间:2024/05/18 03:05
main.m
#import "Car.h"#import "Person.h"#import <Foundation/Foundation.h>int main(int argc, const char * argv[]) {@autoreleasepool {Person * p = [[Person alloc] init];Car * car = [[Car alloc] init]; //@class 只是objcetp.car = car;// [car release];[p play]; //如果提前release car 依然能用 , 因为是用retain修饰的car.person = p;[p release];[car run]; // 就不能用了,因为是 assign修饰的 /* 那循环引用中的 两个对象 到底该修饰谁为 retain , 谁assign呢? 需要考虑主次关系,本例中,从现实中考虑 人没了,车就动不了,所以 [p release]之后 [car run]就动不了,所以 @property (nonatomic,assign) Person * person */}return 0;}
Person.h
#import <Foundation/Foundation.h>@class Car;@interface Person : NSObject@property(nonatomic,retain) Car *car; //不知道类型 所以提示 想要用retain就必须是object type- (void)play;@end
Person.m
#import "Car.h"#import "Person.h"@implementation Person- (void)dealloc {[_car release];[super dealloc]; NSLog(@"person dealloc");}- (void)play{ NSLog(@"Person is play,%@",_car);}@end
Car.h
/* @class Car; @interface Person : NSObject @property(nonatomic,retain) Car *car; @end */#import <Foundation/Foundation.h>@class Person;@interface Car : NSObject/** person */@property (nonatomic,assign) Person * person;- (void)run;@end
Car.m
#import "Car.h"#import "Person.h"@implementation Car- (void)dealloc {//[_person release];[super dealloc]; NSLog(@"car dealloc");}- (void)run{ NSLog(@"running %@",_person);}@end
0 0
- 循环引用的问题...
- spring循环引用的问题
- block 循环引用的问题
- Block的循环引用问题
- Block的循环引用问题
- block的循环引用问题
- Block的循环引用问题
- Block的引用循环问题
- block循环引用的问题
- NSTimer循环引用的问题
- JS循环引用的问题
- NSTimer的循环引用问题
- 引用计数法的循环引用问题
- block的循环引用的问题
- [iOS]ARC下循环引用的问题
- [iOS]ARC下循环引用的问题
- ARC下循环引用的问题
- [iOS]ARC下循环引用的问题
- LeetCode Different Ways to Add Parentheses
- GL中如何让画的点为圆形
- [dp]POJ 2229 Sumsets 解题报告
- LeetCode Single Number III
- LeetCode Integer to English Words
- 循环引用的问题...
- Java开发中的23种设计模式详解
- MYSQL 事务属性 和 隔离级别
- 家庭经营的目的
- Poj 1743Musical Theme|后缀数组|二分答案
- LeetCode Expression Add Operators
- 深入分析C++引用
- 2016成长计划
- 162_超大背包问题 (双向搜索)