2010-04-29 39 views
0

對於爲iPhone編程時的自動釋放池,我有點困惑。我讀過很多東西,而且從「不要使用」到「沒有問題使用」的看法在我看來都是如此。用於提取方法的自動釋放池的使用

我的具體問題是,我想有它封裝SQLite3的訪問類,所以我有例如下面的方法:

-(User*)fetchUserWithId:(NSInteger)userId 

現在,這種方法中的SQL查詢完成和新的用戶對象是使用數據庫中的數據創建的,然後返回。在這個DB Access類中,我不再需要這個對象,所以我可以做一個發佈,但由於調用方法需要它,我會做一個autorelease,不是嗎?

那麼,可以在這裏使用autorelease或者它會獲得太多的內存,如果這種方法被頻繁調用?一些網站說,autorelease池是在應用程序的最後發佈的,有人說,在每一個事件中(例如,用戶觸摸某物)。

如果我不應該使用autorelease,我該如何確保該對象正確釋放?我可以在提取方法中執行發佈操作,並希望在調用方法可以執行保留之前,該對象仍然存在嗎?

感謝您的幫助!

問候 馬蒂亞斯

回答

1

你絕不能放開你還在使用的東西;或者你正在返回某人使用。自動釋放在iPhone上是完全有效的方法,並且在運行循環的每次迭代結束時自動釋放池被排空(對於每個事件基本如此)。