• OC MRC之多对象之间管理(代码分析)


      1 #import <Foundation/Foundation.h>
      2 
      3 @interface Book : NSObject
      4 {
      5     int _price;
      6 }
      7 
      8 - (void)setPrice:(int)price;
      9 - (int)price;
     10 
     11 @end
     12 
     13 #import "Book.h"
     14 
     15 @implementation Book
     16 
     17 - (void)setPrice:(int)price
     18 {
     19     _price = price;
     20 }
     21 
     22 - (int)price
     23 {
     24     return _price;
     25 }
     26 - (void)dealloc
     27 {
     28     NSLog(@"Book对象被回收");
     29     [super dealloc];
     30 }
     31 @end
     32 
     33 
     34 
     35 
     36 
     37 
     38 
     39 
     40 #import <Foundation/Foundation.h>
     41 #import "Book.h"
     42 
     43 @interface Person : NSObject
     44 {
     45     Book *_book;
     46 }
     47 
     48 - (void)setBook:(Book *)book;
     49 - (Book *)book;
     50 
     51 @end
     52 
     53 #import "Person.h"
     54 
     55 @implementation Person
     56 - (void)setBook:(Book *)book
     57 {
     58     _book = [book retain];
     59 }
     60 
     61 - (Book *)book
     62 {
     63     return _book;
     64 }
     65 
     66 - (void)dealloc
     67 {
     68     [_book release];
     69     NSLog(@"Person对象被回收");
     70     [super dealloc];
     71 }
     72 @end
     73 
     74 
     75 
     76 
     77 
     78 
     79 
     80 /*
     81  1.你想使用(占用)某个对象,就应该让对象的计数器+1(让对象做一次retain操作)
     82  2.你不想再使用(占用)某个对象,就应该让对象的计数器-1(让对象做一次release)
     83  
     84  3.谁retain,谁release
     85  
     86  4.谁alloc,谁release
     87  */
     88 
     89 #import <Foundation/Foundation.h>
     90 #import "Person.h"
     91 #import "Book.h"
     92 
     93 int main()
     94 {
     95     // b-1
     96     Book *b = [[Book alloc] init];
     97     // p-1
     98     Person *p1 = [[Person alloc] init];
     99     
    100     //p1想占用b这本书
    101     // b-2
    102     [p1 setBook:b];
    103     
    104     // p-0
    105     // b-1
    106     [p1 release];
    107     p1 = nil;
    108     
    109     // b-0
    110     [b release];
    111     b = nil;
    112     return 0;
    113 }
  • 相关阅读:
    day01的那些事
    Activity活动
    开始认真学习Android了
    《知其所以然》读书笔记
    网络编程——完成端口
    开发服务器端——工程配置
    完善自己的学习方法
    WSAAsyncSelect模型
    双缓冲绘图
    ListControl常用操作汇总
  • 原文地址:https://www.cnblogs.com/oc-bowen/p/5053704.html
Copyright © 2020-2023  润新知