ÔÚ֮ǰµÄһƬÎÄÕÂÖУ¬ÎÒÃǽéÉÜÁËÊý×é²Ù×÷¶ÔÏóµÄʱºòÒýÓÃÎÊÌâÒÔ¼°×Ô¶¯ÊͷųصĸÅÄ
?
½ñÌìÎÒÃǼÌÐøÀ´¿´Ò»ÏÂÒýÓüÆÊýÖÐÒ»¸öÍ´ÌÛµÄÎÊÌ⣺ѻ·ÒýÓÃ
¹ØÓÚÑ»·ÒýÓõÄÎÊÌ⣬ÕâÀï¾Í²»×öÌ«¶à½âÊÍÁË£¬¾ÍÊǶà¸ö¶ÔÏóÖ®¼äÏ໥ÒýÓã¬Ðγɻ·×´¡£
À´¿´Ò»¸ö¾ßÌåµÄÀý×Ó£º
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ÎÒÃÇ·Ö±ð¶¨ÒåÁËÒ»¸öPerson¶ÔÏóºÍDog¶ÔÏó£¬È»ºóÏ໥ÒýÓÃÁË£¬µ«Êǵ±ÎÒÃǵ÷ÓÃËûÃǵÄrelease·½·¨µÄʱºò£¬ÕâÁ½¸ö¶ÔÏó²¢Ã»Óб»ÊÍ·Å#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·½·¨µÄʱºòÒýÓüÆÊý¶¼»¹ÊÇ1£¬ËùÒԾͲ»»áµ÷ÓÃdealloc·½·¨ÁË
dealloc·½·¨ÖÐûÓб»Ö´ÐУ¬ÀïÃæµÄÊÍ·Å´úÂëÒ²¾ÍûִÐÐÁË£¬dogºÍperson¸÷×ÔÔڵȴý£¬Ðγɻ·×´ÁË
?
½â¾öµÄ°ì·¨ÊÇ£º
?
ÇжÏËûÃÇÖ®¼äµÄÁªÏµ
ÔÚÒ»·½Öж¨ÒåÊôÐÔµÄʱºò£¬@propertyÖв»Ê¹ÓÃretain,ʹÓÃassgin
ͬʱÔÚdealloc·½·¨Öв»ÔÙµ÷ÓÃrelease·½·¨ÁË
ÉÏÃæµÄÀý×ÓÖУ¬ÎÒÃÇ¿ÉÒÔ¿´µ½DogÀàÖоÍÊÇʹÓÃassgin
?
?