2009-06-18 27 views
1

我有一個基於導航的應用程序,我想使用加速度計來檢測抖動並導致滾動視圖滾動到下一頁。我已經將加速度計代碼添加到了我的scrollView的視圖控制器中,並且效果很好;一個搖一搖我的頁面更改方法。但是當我從導航堆棧卸載scrollViewController時,應用程序崩潰。iPhone加速度計崩潰應用程序

我在scrollViewController的viewDidLoad方法中設置了加速度計,並響應加速度計中的震動:didAccelerate:delegate方法。

當scrollViewController被取消分配時,應用程序崩潰。

我缺少什麼?

謝謝

+0

你可以顯示你安裝加速度計的地方嗎?你的viewController的dealloc方法也會有所幫助。 – Jab 2009-06-18 19:41:54

+0

你如何切換頁面?你是否釋放你唯一的視圖控制器,然後分配一個新的? – ryansstack 2009-06-18 19:05:24

回答

0

什麼是您的加速度計的更新率?我聽說如果它太高,會發生奇怪的事情。

0

我無法發表評論,所以我不得不在回答中發表這個問題。你能顯示你的新視圖頁面的加載方式嗎?正如我所理解的那樣,一旦你動搖它,它就會轉換到新的視圖。你能否將你的電話顯示到新視圖上?

3

找到了答案在另一個線程:

How do you release a shared accelerator instance on the iPhone?

我需要加速度計的委託設置爲nil時,我的滾動視圖釋放。加速計是一個單例,它保留了對它的委託的引用,在這種情況下我的scrollViewController。當我的scrollViewController彈出堆棧時,引用被掛起,崩潰了他的應用程序。

感謝菲爾納什的答案!

0

簡單:通過設置委託方法,您已告知另一個對象(加速計),該滾動視圖存在。

但是,當它不復存在時,它是否告訴它,因此它可以不發送任何消息給它?我想不是。我猜不是。您需要再次設置委託,此時爲零。