遷移自開源中國
對于一個指向對象的變量,它里面存儲的是一個地址,一個指向內存中某塊區域的地址。
nil:的作用就是將這個變量置為空,不指向任何地址。
release:的作用是將這個變量指向的內存中的對象的引用計數減一,直到引用計數為零時釋放這塊內存。
所以,如果你只是做了nil操作,那么就會引起內存泄露的問題,因為它永遠也不會做release操作了。
如果你只是做了release操作,那么就有可能引起crash,原因就是只是release(我認為這個對象已經被釋放)而沒有將變量置為空,當你再對這個變量做操作時就會引起問題,因為你在對一個不存在的對象做操作。
所以建議,不再需要一個對象時,除了要做release操作以外還要做nil操作。
NSString *str; 此時str指向當前對象。所以對它的操作要小心,建議:NSString *str = nil;