08-04、僵尸对象、野指针、空指针

2017-09-25  本文已影响0人  山中石头
Snip20170925_44.png
Xcode中给当前项目设置监听僵尸对象报的错
Snip20170925_46.png
Xcode中设置全局断点,可以让程序停留在报错的那行代码
Snip20170925_47.png
杠杠func杠杠的使用
Snip20170925_49.png
#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;
  }
上一篇 下一篇

猜你喜欢

热点阅读