2011-09-15 54 views

回答

5

即使你釋放一個對象,你的變量仍然會指向某個東西。它指向的是未定義的。它仍然可以指向舊對象,或指向內存中的某個點。將它設置爲零可以避免將消息發送到指向的任何地方,並防止錯誤(消息傳遞nil不做任何事情)。

這裏是一個更好的狀態是一個答案:Setting pointers to nil, objective-c

1

這主要需要做的與多線程,如果其他線程試圖訪問您發佈的對象並設置爲nil它不會崩潰。您可以發送消息到nil對象,它將不會執行任何操作。

但是,如果它只是釋放你正在發送消息給釋放的對象,你的應用程序將崩潰。

這裏是很好的閱讀材料:

如果反對票,請告訴我們原因。

1

如果您剛剛發佈它,object仍然指向它之前有內存地址。如果您檢查它爲零(object == nil),它將返回NO。釋放它後最好確保它指向nil