zoukankan      html  css  js  c++  java
  • OC内存管理示例

    1. 谁 alloc ,谁 release;

    2. 谁要占用谁retain;

    3. 谁不想占用对象时就 让对象计数器release;

    4.谁 retain,谁release;

     1 // Book类
     2 @interface Book:NSObject
     3 
     4 {
     5 
     6       int _price;  // 书的价格
     7 
     8 }
     9 // Book的 get set方法
    10 - (void)setPrice:(int) price;
    11 
    12 - (int)price;
    13 
    14 @end
    15 
    16 @implementation Book
    17 - (void)setPrice:(int) price{
    18     
    19       _price = price;
    20 }
    21 
    22 - (int)price{
    23       return _price;
    24 }
    25 
    26 - (void)dealloc{
    27    
    28     NSLog(@"Book对象被回收");
    29     [super dealloc];
    30 
    31 }
    32 @end
    33 
    34 
    35 // Person类的声明与实现  Person.h
    36 
    37 @interface Person:NSObject
    38 {
    39        Book *_book;
    40 
    41 }
    42 // get set方法声明
    43 - (void)setBook:(Book *) book;
    44 - (Book *)book;
    45 
    46 @end 
    47 
    48 // Person.m
    49 
    50 @implementation Person
    51 
    52 - (void)setBook:(Book *) book{
    53 
    54       _book = [book retain];  //计数器+1
    55 }
    56 
    57 - (Book *)book{
    58       return _book;
    59 }
    60 
    61 // 重写 dealloc
    62 - (void)dealloc{
    63      [_book release];
    64      NSLog(@"person对象被回收");
    65      [super dealloc] ;// 最后写super dealloc
    66 }
    67 @end
    68 
    69 
    70 
    71 
    72 
    73 
    74 
    75 int main(){
    76 
    77       Person *p = [ [Person alloc] init ];   // p 计数器 +1
    78       Book    *b = [ [Book alloc] init ];     // b 计数器 +1
    79      [ p setBook:b];  // 使用Book 时 retain;  b计数器值2
    80 
    81 
    82     [b release];     // 计数器 2 -1 =1
    83     
    84     [p release];//   p计数器为0调用 Person 的dealloc 对Book release
    85     b = nil;
    86     p = nil;
    87   
    88     return 0 ;
    89 
    90 }
  • 相关阅读:
    vuerouter-2.路由跳转
    vuerouter-1.路由基础
    vuebase-11._跨域处理
    vuebase-10_Axios配置
    vuebase--9._axios post请求
    vuebase--8._axios
    vuebase-7.过滤器
    vuebase-6.自定义指令
    vuebase-5.过渡和动画
    vuebase---4.实例生命周期
  • 原文地址:https://www.cnblogs.com/jerry1209/p/4243097.html
Copyright © 2011-2022 走看看