zoukankan      html  css  js  c++  java
  • OC MRC之计数器的基本操作(代码分析)

     1 /*
     2  1.方法的基本使用
     3  1> retain :计数器+1,会返回对象本身
     4  2> release :计数器-1,没有返回值
     5  3> retainCount :获取当前的计数器
     6  4> dealloc
     7   * 当一个对象要被回收的时候,就会调用
     8   * 一定要调用[super dealloc],这句调用要放在最后面
     9  
    10  2.概念
    11  1> 僵尸对象 :所占用内存已经被回收的对象,僵尸对象不能再使用
    12  2> 野指针 :指向僵尸对象(不可用内存)的指针,给野指针发送消息会报错(EXC_BAD_ACCESS)
    13  3> 空指针 :没有指向任何东西的指针(存储的东西是nil、NULL、0),给空指针发送消息不会报错
    14  
    15  */
    16 
    17 
    18 #import <Foundation/Foundation.h>
    19 
    20 @interface Person : NSObject
    21 
    22 @property int age;
    23 
    24 @end
    25 
    26 
    27 
    28 #import "Person.h"
    29 
    30 @implementation Person
    31 // 当一个Person对象被回收的时候,就会自动调用这个方法
    32 - (void)dealloc
    33 {
    34     NSLog(@"Person对象被回收");
    35     
    36     // super的dealloc一定要调用,而且放在最后面
    37     [super dealloc];
    38 }
    39 @end
    40 
    41 
    42 
    43 #import <Foundation/Foundation.h>
    44 #import "Person.h"
    45 
    46 int main()
    47 {
    48     // 1
    49     Person *p = [[Person alloc] init];
    50     
    51     //NSUInteger c = [p retainCount];
    52     
    53     //NSLog(@"计数器:%ld", c);
    54     
    55     
    56     // 2 retain方法返回的是对象本身
    57     [p retain];
    58     
    59     // 1
    60     [p release];
    61     
    62     // 0 野指针:指向僵尸对象(不可用内存)的指针
    63     [p release];
    64     
    65     [p retain];
    66     
    67     // -[Person setAge:]: message sent to deallocated instance 0x100109a10
    68     // 给已经释放的对象发送了一条-setAge:消息:
    69     p.age = 10;
    70     //[p setAge:10];
    71     
    72     // 指针p变成空指针
    73     //p = nil;
    74     
    75     // EXC_BAD_ACCESS : 访问了一块坏的内存(已经被回收、已经不可用的内存
    76     // 野指针错误
    77     // OC不存在空指针错误,给空指针发送消息,不报错
    78     [p release];
    79     [p release];
    80     [p release];
    81     [p release];
    82     
    83     [nil release];
    84     
    85     return 0;
    86 }
  • 相关阅读:
    android TextView字体设置最少占多少行. 及其 Java String 字符串操作 . .
    Android ViewSwitcher 的功能与用法
    (14):Chain of Responsibility 职责链模式(行为型模式)
    享元模式Flyweight
    外观模式Facade
    装饰模式(Decorator)
    软件实现
    面向对象设计
    面向对象分析
    面向对象基础
  • 原文地址:https://www.cnblogs.com/oc-bowen/p/5053701.html
Copyright © 2011-2022 走看看