zoukankan      html  css  js  c++  java
  • oc43--野指针和空指针

    //
    //  main.m
    //  野指针和空指针
    
    #import <Foundation/Foundation.h>
    #import "Person.h"
    
    int main(int argc, const char * argv[]) {
    
        @autoreleasepool {
            Person *p = [[Person alloc] init]; // 1
            
            // 只要一个对象被释放了, 我们就称这个对象为 "僵尸对象" , 当一个指针指向一个僵尸对象, 我们就称这个指针为野指针
            // 只要给一个野指针发送消息就会报错
            [p release]; // 1-1 = 0
            // *** -[Person release]: message sent to deallocated instance 0x1001146b0
    
            // 空指针  nil  0
            // 为了避免给野指针发送消息会报错, 一般情况下, 当一个对象被释放后我们会将这个对象的指针设置为空指针
            // 因为在OC中给空指针发送消息是不会报错的
            
           // p = nil;
            
            [p release];
            [p release];
            [p release];
            [p release];
            [p release];
            [p release];
            [p release];
        }
        return 0;
    }
    //  Person.h
    
    #import <Foundation/Foundation.h>
    
    @interface Person : NSObject
    
        @property int age;
    
    @end
    //  Person.m
    
    #import "Person.h"
    
    @implementation Person
    
        - (void)dealloc
        {
            NSLog(@"Person dealloc");
            NSLog(@"%s", __func__); // [Person dealloc],  类名加方法名
            
            [super dealloc];
        }
    
    @end
  • 相关阅读:
    Java基础知识
    jQuery的表单操作
    SSM——查询_分页
    jQuery实现查看删除
    SSM之Maven工程的搭建
    Mybatis使用@Param
    Mybatis简单的CURD
    Mybatis使用接口开发
    初入Mybatis
    SQL语句
  • 原文地址:https://www.cnblogs.com/yaowen/p/7419202.html
Copyright © 2011-2022 走看看