不依賴於對象,執行效率更高;指針
能用類方法解決的問題,儘可能使用類方法;code
類方法中不能直接訪問實例變量(成員變量)對象
只要一個對象被釋放了,咱們就稱這個對象爲 "殭屍對象(不能再使用的對象)"
當一個指針指向一個殭屍對象(不可用內存),咱們就稱這個指針爲野指針
只要給一個野指針發送消息就會報錯(EXC_BAD_ACCESS錯誤)內存
int main(int argc, const char * argv[]) { @autoreleasepool { Person *p = [[Person alloc] init]; // 執行完引用計數爲1 [p release]; // 執行完引用計數爲0,實例對象被釋放 [p release]; // 此時,p就變成了野指針,再給野指針p發送消息就會報錯 [p release]; } return 0; }
爲了不給野指針發送消息會報錯,通常狀況下,當一個對象被釋放後咱們會將這個對象的指針設置爲空指針
空指針it
沒有指向存儲空間的指針(裏面存的是nil, 也就是0)
給空指針發消息是沒有任何反應的效率
int main(int argc, const char * argv[]) { @autoreleasepool { Person *p = [[Person alloc] init]; // 執行完引用計數爲1 [p release]; // 執行完引用計數爲0,實例對象被釋放 p = nil; // 此時,p變爲了空指針 [p release]; // 再給空指針p發送消息就不會報錯了 [p release]; } return 0; }