2013-07-15 49 views
1

我正在設置一個UILocalNotification來通知用戶有關事件。iOS模擬器在設置UILocalNotification並關閉應用程序時崩潰

我的問題是在設置通知並關閉應用程序後,模擬器崩潰並顯示消息「線程1:信號SIGKILL」。

我知道this答案,但我沒有在userinfo字典中存儲任何東西。

下面的代碼:

NSDate *alertTime = [[NSDate date] 
        dateByAddingTimeInterval:10]; 
UIApplication* app = [UIApplication sharedApplication]; 
UILocalNotification* notifyAlarm = [[UILocalNotification alloc] init]; 

if (notifyAlarm) 
{ 
    notifyAlarm.fireDate = alertTime; 
    notifyAlarm.timeZone = [NSTimeZone defaultTimeZone]; 
    notifyAlarm.repeatInterval = 0; 
    notifyAlarm.alertBody = @"Testing notification."; 
    [app scheduleLocalNotification:notifyAlarm]; 
    NSLog(@"Notification set"); 
} 

你有任何想法,爲什麼這可能發生?

謝謝

+1

你能發表相關的方法或代碼嗎? –

+0

我已經爲你更新了我的問題。 – JakesRassie

+0

將代碼粘貼到收到通知的地方 –

回答

1

我經歷過同樣的問題,並經過一些實驗學到足夠的能夠解決它。

首先,請注意,你可以簡單地通過以下步驟觸發這個崩潰/隨意掛:

  1. 啓動您的應用程序在Xcode(無論是設備或模擬器上)。
  2. (可選)觸發通知,然後按主頁按鈕以最小化您的應用程序,然後雙擊主頁按鈕並從出現的停靠欄完全關閉您的應用程序。
  3. 不用拔掉設備,關閉模擬器或關閉Xcode,直接從設備或模擬器重新啓動應用程序,可以通過點擊召喚應用程序的通知或者只需點擊主屏幕上的應用程序圖標。

現在,如果您在模擬器上,該應用程序將立即崩潰,如果您使用的是真實設備,則整個設備將掛起,甚至無法按下主屏幕按鈕直到您拔下它,或在Xcode中再次按運行按鈕。

這個問題似乎表現在Xcode 4.6.3和Xcode 5.0中;我還沒有嘗試過其他版本。

不用說,如果您嘗試測試涉及從通知中完全重新啓動應用程序的用戶交互路徑(例如問題提示器在這裏)(而不是簡單地測試通知爲您的應用程序帶來的情況從背景進入前景)。幸運的是,該錯誤相當容易解決。

如果您使用的是設備,解決方法很簡單:從Mac上拔下設備。如果在嘗試啓動應用程序時將設備插入Xcode,上述錯誤只會顯現出來。

如果您只能訪問模擬器,這有點棘手,但只是稍微。首先,使用說明here,使您能夠從外部的Xcode啓動模擬器:

  1. 在Finder中,瀏覽到/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Applications/
  2. 將來自該文件夾的iOS Simulator應用到您的船塢。
  3. 您現在可以在任何時候將模擬器作爲獨立應用程序從您的Dock中啓動。

我們使用本地通知完全重新啓動應用程序測試的應用程序:

  1. 啓動您從Xcode的模擬器應用程序。
  2. 觸發您的本地通知。
  3. 使用主頁按鈕退出您的應用程序。
  4. 雙擊主頁按鈕並從模擬器底座關閉您的應用程序。
  5. 關閉模擬器命令 + q
  6. 下重新啓動從Mac的Dock中的模擬器。
  7. 等待您的通知。
  8. 點按通知即可重新啓動應用。
  9. 注意到它不會立即崩潰!好極了!

這是非常愚蠢的,這是必要的,但至少應用此解決方案不需要很長時間。

相關問題