3 回答

TA貢獻2036條經(jīng)驗 獲得超8個贊
因為一開始我是用alloc聲明我的所有數(shù)組,如果在某個函數(shù)的末尾我返回了用alloc創(chuàng)建的數(shù)組,則我必須自動釋放該數(shù)組,因為內(nèi)存泄漏問題。現(xiàn)在使用第一個聲明,我不需要釋放任何內(nèi)容
當(dāng)您“出售”一個對象時,這是完全正確的。但是在其他情況下,當(dāng)您在iOS上創(chuàng)建對象時,可以在獲取現(xiàn)成的自動釋放對象和調(diào)用alloc之后再釋放之間進行選擇,Apple希望您使用alloc和release,因為這樣可以保持對象的生命周期短,由您控制。
這里的問題是,自動釋放的對象駐留在自動釋放池中,并且可能一直堆積到池耗盡為止。
需要注意的另一件事是循環(huán)。您可能會在不知不覺中生成自動釋放的對象的情況下,它們只是堆積在池中。解決方案是在循環(huán)開始時創(chuàng)建自己的自動釋放池,并在循環(huán)結(jié)束時釋放它,以便每次通過循環(huán)都釋放對象。
但是隨著iOS 5和ARC的到來,自動釋放機制更加有效,并且沒有諸如之類的東西release
,因此alloc-init和出售自動釋放對象的便利構(gòu)造函數(shù)之間的區(qū)別變得模擬。(現(xiàn)在它也是一個@autoreleasepool
塊,而不是一個自動釋放池(偽)對象。)
- 3 回答
- 0 關(guān)注
- 620 瀏覽
添加回答
舉報