zoukankan      html  css  js  c++  java
  • OC MRC之循环引用问题(代码分析)

      1 //
      2 //  main.m
      3 //  07-循环引用
      4 //
      5 //  Created by apple on 13-8-9.
      6 //  Copyright (c) 2013年 itcast. All rights reserved.
      7 //
      8 
      9 
     10 /*
     11  1.@class的作用:仅仅告诉编译器,某个名称是一个类
     12  @class Person; // 仅仅告诉编译器,Person是一个类
     13  
     14  2.开发中引用一个类的规范
     15  1> 在.h文件中用@class来声明类
     16  2> 在.m文件中用#import来包含类的所有东西
     17  
     18  3.两端循环引用解决方案
     19  1> 一端用retain
     20  2> 一端用assign
     21  
     22  */
     23 
     24 
     25 #import <Foundation/Foundation.h>
     26 #import "Card.h"
     27 // @class仅仅是告诉编译器,Card是一个类
     28 //@class Card;
     29 
     30 @interface Person : NSObject
     31 
     32 @property (nonatomic, retain) Card *card;
     33 
     34 @end
     35 
     36 #import "Person.h"
     37 #import "Card.h"
     38 
     39 @implementation Person
     40 
     41 - (void)dealloc
     42 {
     43     NSLog(@"Person被销毁了");
     44     [_card release];
     45     
     46     [super dealloc];
     47 }
     48 
     49 @end
     50 
     51 #import <Foundation/Foundation.h>
     52 
     53 @class Person;
     54 
     55 @interface Card : NSObject
     56 
     57 @property (nonatomic, assign) Person *person;
     58 
     59 @end
     60 
     61 #import "Card.h"
     62 #import "Person.h"
     63 
     64 @implementation Card
     65 
     66 
     67 - (void)dealloc
     68 {
     69     NSLog(@"Car被销毁了");
     70     
     71     // [_person release];
     72     
     73     [super dealloc];
     74 }
     75 
     76 @end
     77 
     78 
     79 
     80 #import <Foundation/Foundation.h>
     81 #import "Card.h"
     82 #import "Person.h"
     83 
     84 int main()
     85 {
     86     // p - 1
     87     Person *p = [[Person alloc] init];
     88     // c - 1
     89     Card *c = [[Card alloc] init];
     90     
     91     // c - 2
     92     p.card = c;
     93     
     94     // p - 1
     95     c.person = p;
     96     
     97     // c - 1
     98     [c release];
     99     
    100     // p - 0  c - 0
    101     [p release];
    102     return 0;
    103 }
  • 相关阅读:
    转移虚拟机后ubuntu network available SIOCSIFADDR: No such device
    模板中国剩余定理
    数论 CF27E Number With The Given Amount Of Divisors
    模板 输入输出优化
    模板 欧拉定理
    洛谷P1141 01迷宫
    图论拓扑排序
    归并排序 分治
    HZNUACM寒假集训Day12小结 数论入门 题解
    组合数学基础
  • 原文地址:https://www.cnblogs.com/oc-bowen/p/5053738.html
Copyright © 2011-2022 走看看