ÔÚ֮ǰµÄһƬÎÄÕÂÖУ¬ÎÒÃǽéÉÜÁËÊý×é²Ù×÷¶ÔÏóµÄʱºòÒýÓÃÎÊÌâÒÔ¼°×Ô¶¯ÊͷųصĸÅÄ
?
½ñÌìÎÒÃǼÌÐøÀ´¿´Ò»ÏÂÒýÓüÆÊýÖÐÒ»¸öÍ´ÌÛµÄÎÊÌ⣺ѻ·ÒýÓÃ
¹ØÓÚÑ»·ÒýÓõÄÎÊÌ⣬ÕâÀï¾Í²»×öÌ«¶à½âÊÍÁË£¬¾ÍÊǶà¸ö¶ÔÏóÖ®¼äÏ໥ÒýÓã¬Ðγɻ·×´¡£
À´¿´Ò»¸ö¾ßÌåµÄÀý×Ó£º
DogÀàºÍPersonÀàÖ®¼äÏ໥ÒýÓÃ
?
Dog.h
?
//
// Dog.h
// 29_CyclePointer
//
// Created by jiangwei on 14-10-13.
// Copyright (c) 2014Äê jiangwei. All rights reserved.
//
#import
#import Person.h
@interface Dog : NSObject
//ÕâÀï²»ÓÃretain,Èç¹ûʹÓÃretainµÄ»°£¬»áÐγÉÑ»·ÒýÓÃ
@property(nonatomic,assign,readwrite) Person *person;
- (void)dealloc;
@end
?
?
Dog.m
?
//
// Dog.m
// 29_CyclePointer
//
// Created by jiangwei on 14-10-13.
// Copyright (c) 2014Äê jiangwei. All rights reserved.
//
#import Dog.h
@implementation Dog
- (void)dealloc{
//[_person release];
NSLog(@dog dealloc);
[super dealloc];
}
@end
DogÀàÖÐÓÐÒ»¸öPersonÀàÐ͵ÄÊôÐÔ
?
?
Person.h
?
//
// Person.h
// 29_CyclePointer
//
// Created by jiangwei on 14-10-13.
// Copyright (c) 2014Äê jiangwei. All rights reserved.
//
#import
@class Dog;
@interface Person : NSObject
@property(nonatomic,retain,readwrite) Dog *dog;
- (void)dealloc;
@end
Person.m
?
?
//
// Person.m
// 29_CyclePointer
//
// Created by jiangwei on 14-10-13.
// Copyright (c) 2014Äê jiangwei. All rights reserved.
//
#import Person.h
#import Dog.h
@implementation Person
- (void)dealloc{
[_dog release];
NSLog(@Person dealloc);
[super dealloc];
}
@end
PersonÀàÖÐÓÐDogÀàÐ͵ÄÊôÐÔ
?
?
¿´Ò»Ï²âÊÔ´úÂë
main.m
?
//
// main.m
// 29_CyclePointer
//
// Created by jiangwei on 14-10-13.
// Copyright (c) 2014Äê jiangwei. All rights reserved.
//
#import
#import Dog.h
#import Person.h
//Ñ»·ÒýÓÃ
//ÊÇÒ»¸öºÜÂé·³µÄÒ»¼þÊ£¬ÍêÈ«¿¿¾Ñé
int main(int argc, const char * argv[]) {
Person *p = [[Person alloc] init];
Dog *dog = [[Dog alloc] init];
[p setDog:dog];//dog¼ÆÊý:2
[dog setPerson:p];//person¼ÆÊý:2
[p release]; //person¼ÆÊý£º1
[dog release];//dog¼ÆÊý£º1
//ûÓÐÊͷŵÄÔÒòÊÇdealloc·½·¨ÖÐûÓб»Ö´ÐУ¬ÀïÃæµÄÊÍ·Å´úÂëÒ²¾ÍûִÐÐÁË£¬dogºÍperson¸÷×ÔÔڵȴý£¬Ðγɻ·×´ÁË
//½â¾ö°æ±¾¾ÍÊÇÇжÏËûÃÇÖ®¼äµÄÁªÏµ
//@propertyÖв»Ê¹ÓÃretain,ʹÓÃassgin
NSLog(@is over);
return 0;
}
ÎÒÃÇ·Ö±ð¶¨ÒåÁËÒ»¸öPerson¶ÔÏóºÍDog¶ÔÏó£¬È»ºóÏ໥ÒýÓÃÁË£¬µ«Êǵ±ÎÒÃǵ÷ÓÃËûÃǵÄrelease·½·¨µÄʱºò£¬ÕâÁ½¸ö¶ÔÏó²¢Ã»Óб»ÊÍ·Å
?
ÔÒòºÜ¼òµ¥£º
?
personºÍdogµÄÏ໥ÒýÓÃÁË£¬µ±Ö´ÐÐrelease·½·¨µÄʱºòÒýÓüÆÊý¶¼»¹ÊÇ1£¬ËùÒԾͲ»»áµ÷ÓÃdealloc·½·¨ÁË
dealloc·½·¨ÖÐûÓб»Ö´ÐУ¬ÀïÃæµÄÊÍ·Å´úÂëÒ²¾ÍûִÐÐÁË£¬dogºÍperson¸÷×ÔÔڵȴý£¬Ðγɻ·×´ÁË
?
½â¾öµÄ°ì·¨ÊÇ£º
?
ÇжÏËûÃÇÖ®¼äµÄÁªÏµ
ÔÚÒ»·½Öж¨ÒåÊôÐÔµÄʱºò£¬@propertyÖв»Ê¹ÓÃretain,ʹÓÃassgin
ͬʱÔÚdealloc·½·¨Öв»ÔÙµ÷ÓÃrelease·½·¨ÁË
ÉÏÃæµÄÀý×ÓÖУ¬ÎÒÃÇ¿ÉÒÔ¿´µ½DogÀàÖоÍÊÇʹÓÃassgin
?
?