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
复制代码

 


本文转自农夫山泉别墅博客园博客,原文链接:http://www.cnblogs.com/yaowen/p/7419202.html,如需转载请自行联系原作者

相关文章
野指针与空指针:深入解析与防范策略
野指针与空指针:深入解析与防范策略
|
安全 算法 程序员
【C++智能指针 空指针判断】深入探索C++智能指针:nullptr与empty的微妙差异
【C++智能指针 空指针判断】深入探索C++智能指针:nullptr与empty的微妙差异
670 1
空指针和野指针的区别和定义
空指针和野指针的区别和定义
331 0
C++野指针 空指针 危险指针
C++野指针 空指针 危险指针
264 3
|
C++
C++中野指针和空指针和无类型指针
一. 野指针 所谓的野指针指的是一个指针变量指向了不可使用的内存空间。 产生野指针三个原因: (1)指针变量创建时候没有被初始化:任何指针变量在创建的时候,不会自动成为NULL指针,它的默认值是随机的,因此该指针就会成为一个野指针,可能指向一块不可使用的内存空间。
1403 0
|
编译器 C语言 C++
C语言 野指针和空指针
C语言 野指针和空指针
428 1
C语言 野指针和空指针
|
Java Go Windows
Go-指针类型详解(空指针、指针的指针、函数形参指针等)
Go-指针类型详解(空指针、指针的指针、函数形参指针等)
215 0
Go-指针类型详解(空指针、指针的指针、函数形参指针等)
指针(三)- 二级指针、野指针、空指针
指针(三)- 二级指针、野指针、空指针
325 0
|
前端开发 Java
被同事的空指针硬生生的折磨了好久,终于学会了如何处理空指针
阿粉入职这么久了,无论如何也不会想到会被自己同事写的一个接口返回的空指针异常折磨致死,折磨的死去活来,却完全不知道是什么原因,你有没有过这种经历呢?
被同事的空指针硬生生的折磨了好久,终于学会了如何处理空指针