iOS 類方法 、野指針與空指針

1、類方法:

不依賴於對象,執行效率更高;指針

能用類方法解決的問題,儘可能使用類方法;code

類方法中不能直接訪問實例變量(成員變量)對象

2、野指針和空指針是什麼?何時產生?怎麼避免?

只要一個對象被釋放了,咱們就稱這個對象爲 "殭屍對象(不能再使用的對象)"
當一個指針指向一個殭屍對象(不可用內存),咱們就稱這個指針爲野指針
只要給一個野指針發送消息就會報錯(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;
}
相關文章
相關標籤/搜索