ÉèΪÊ×Ò³ ¼ÓÈëÊÕ²Ø

TOP

OCѧϰƪ֮---Ñ­»·ÒýÓÃÎÊÌâ
2015-01-21 11:09:38 À´Ô´: ×÷Õß: ¡¾´ó ÖРС¡¿ ä¯ÀÀ:16´Î
Tags£ºÑ§Ï° --- Ñ­»· ÒýÓà ÎÊÌâ

ÔÚ֮ǰµÄһƬÎÄÕÂÖУ¬ÎÒÃǽéÉÜÁËÊý×é²Ù×÷¶ÔÏóµÄʱºòÒýÓÃÎÊÌâÒÔ¼°×Ô¶¯ÊͷųصĸÅÄ

?

½ñÌìÎÒÃǼÌÐøÀ´¿´Ò»ÏÂÒýÓüÆÊýÖÐÒ»¸öÍ´ÌÛµÄÎÊÌ⣺ѭ»·ÒýÓÃ

¹ØÓÚÑ­»·ÒýÓõÄÎÊÌ⣬ÕâÀï¾Í²»×öÌ«¶à½âÊÍÁË£¬¾ÍÊǶà¸ö¶ÔÏóÖ®¼äÏ໥ÒýÓã¬Ðγɻ·×´¡£

À´¿´Ò»¸ö¾ßÌåµÄÀý×Ó£º

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

?

?





¡¾´ó ÖРС¡¿¡¾´òÓ¡¡¿ ¡¾·±Ìå¡¿¡¾Í¶¸å¡¿¡¾Êղء¿ ¡¾ÍƼö¡¿¡¾¾Ù±¨¡¿¡¾ÆÀÂÛ¡¿ ¡¾¹Ø±Õ¡¿ ¡¾·µ»Ø¶¥²¿¡¿
·ÖÏíµ½: 
ÉÏһƪ£ºObject-cÖеÄinitialize Óë µ¥Àý ÏÂһƪ£º±ÕÉ¢ÁбíµÄ²éÕÒ¡¢²åÈëºÍɾ³ý²Ù×÷..

ÆÀÂÛ

ÕÊ¡¡¡¡ºÅ: ÃÜÂë: (ÐÂÓû§×¢²á)
Ñé Ö¤ Âë:
±í¡¡¡¡Çé:
ÄÚ¡¡¡¡ÈÝ: