zoukankan      html  css  js  c++  java
  • oc51--循环retain

    //  main.m
    //  循环retain
    
    #import <Foundation/Foundation.h>
    #import "Person.h"
    #import "Dog.h"
    
    int main(int argc, const char * argv[]) {
    
        Person *p = [Person new];
        Dog *d = [Dog new];
        
        // 如果A对用要拥有B对象, 而B对应又要拥有A对象, 此时会形成循环retain
        // 如何解决这个问题: 不要让A retain B, B retain A
        // 让其中一方不要做retain操作即可
        p.dog = d; // retain
        d.owner = p; // retain  assign
        
        [p release];
        [d release];
        
        return 0;
    }
    //  Dog.h
    
    #import <Foundation/Foundation.h>
    @class Person;
    
    @interface Dog : NSObject
    
    //@property(nonatomic, retain)Person *owner;
    @property(nonatomic, assign)Person *owner;
    @end
    //  Dog.m
    
    #import "Dog.h"
    #import "Person.h"
    
    @implementation Dog
    
    -(void)dealloc
    {
        NSLog(@"%s", __func__);
    //    [_owner release];
    //    self.owner = nil;
        [super dealloc];
    }
    @end
    //
    //  Person.h
    
    #import <Foundation/Foundation.h>
    @class Dog;
    
    @interface Person : NSObject
    
    @property(nonatomic, retain)Dog *dog;
    @end
    //  Person.m
    
    #import "Person.h"
    #import "Dog.h"
    
    @implementation Person
    
    
    - (void)dealloc
    {
        NSLog(@"%s", __func__);
    //    [_dog release];
        self.dog = nil;
        [super dealloc];
    }
    @end
  • 相关阅读:
    nyoj 202 红黑树
    nyoj 237 游戏高手的烦恼
    nyoj 203 三国志
    nyoj 118 修路方案
    nyoj 714 Card Trick
    nyoj 710 外星人的供给站
    nyoj 712探 寻 宝 藏
    nyoj 709 异 形 卵
    nyoj 711 最舒适的路线
    HTML5表格简单应用案例之[招聘需求表]
  • 原文地址:https://www.cnblogs.com/yaowen/p/7428389.html
Copyright © 2011-2022 走看看