我必須執行一項繁重的任務。當我在主線程中運行它時,一切都很完美,但是當我嘗試從單獨的線程運行任務時,出現的錯誤是「現在沒有可供編程的內存:不安全的調用malloc」。OS X是否限制次要線程的內存使用量?
我使用的是+[NSThread detachNewThreadSelector:toTarget:withObject:]
,並且在必要時放置了所需的自動釋放池(也就是說,在開始時我分配並初始化它,然後在最後把它排空)。
我的問題是:在輔助線程中是否存在內存限制(可能堆棧內存被削減?)?我試圖用儀器進行調試,但沒有泄漏,應用程序崩潰。
在調用detachNewThread之前調用** autorelease **嗎?如果你是這樣的話,那麼這個對象已經在你的主線程中自動釋放了,然後你嘗試從它已經離開的另一個線程訪問它。 –
@MaurícioLinhares不,我不是。事實上,在應用程序中甚至沒有一個電話需要-autorelease。 –
你爲什麼在討論排除autorelease池的問題?這是在新的線程?在你的項目上啓用NSZombie,它可能會幫助你 - > http://www.cocoadev.com/index.pl?NSZombieEnabled –