はあなたがapplicationWillTerminate
でオブザーバを削除didFinishLaunchingWithOptions
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(<#your selector#>)
name:@"TestNotification"
object:nil];
return YES;
}
にaddobserverする必要があり、この
を試してみてください。何度もアプリがバックグラウンドになり、常にdidFinishLaunchingWithOptions
を呼び出さないので、他の方法でオブザーバを削除する必要はありません。あなたはapplicationWillTerminate
の中でのみ削除する必要があります。
- (void)applicationWillTerminate:(UIApplication *)application {
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
// If you don't remove yourself as an observer, the Notification Center
// will continue to try and send notification objects to the deallocated
// object.
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
希望すると助かります。
出典
2016-07-11 06:02:56
Vvk
あなたは 'didFinishLaunchingWithOptions'にオブザーバーを追加していますか? – Vvk
@Vvkはいそれを追加しました – den330
あなたはAppDelegateの 'applicationWillTerminate'メソッドでオブザーバーを削除する必要があります – Vvk