Snip20170925_44.png
Xcode中給當(dāng)前項(xiàng)目設(shè)置監(jiān)聽僵尸對(duì)象報(bào)的錯(cuò)
Snip20170925_46.png
Xcode中設(shè)置全局?jǐn)帱c(diǎn),可以讓程序停留在報(bào)錯(cuò)的那行代碼
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
// 只要一個(gè)對(duì)象被釋放了, 我們就稱這個(gè)對(duì)象為 "僵尸對(duì)象"
// 當(dāng)一個(gè)指針指向一個(gè)僵尸對(duì)象, 我們就稱這個(gè)指針為野指針
// 只要給一個(gè)野指針發(fā)送消息就會(huì)報(bào)錯(cuò)
[p release]; // 1-1 = 0
// *** -[Person release]: message sent to deallocated instance 0x1001146b0
// 空指針 nil 0
// 為了避免給野指針發(fā)送消息會(huì)報(bào)錯(cuò), 一般情況下, 當(dāng)一個(gè)對(duì)象被釋放后我們會(huì)將這個(gè)對(duì)象的指針設(shè)置為空指針
// 因?yàn)樵贠C中給空指針發(fā)送消息是不會(huì)報(bào)錯(cuò)的
// p = nil;
[p release];
[p release];
[p release];
[p release];
[p release];
[p release];
[p release];
}
return 0;
}