UITableViewCell
にawakeFromNib
が呼び出されるとNSNotificationオブザーバが追加されます。その後、私はremoveFromSuperView
が呼び出されたときにオブザーバーを削除しています。iOS - NSNotificationを受信したときにUITableViewCellのawakeFromNibが呼び出される
- (void)awakeFromNib
{
[super awakeFromNib];
[self setNotificationObserver];
_vHolder.layer.cornerRadius = 10.0f;
_vHolder.layer.shadowColor = [UIColor blackColor].CGColor;
_vHolder.layer.shadowRadius = 2.0f;
_vHolder.layer.shadowOffset = CGSizeMake(0.0f, 0.0f);
_vHolder.layer.shadowOpacity = 0.5f;
}
- (void)removeFromSuperview
{
[super removeFromSuperview];
[self removeNotificationObserver];
}
- (void)setNotificationObserver
{
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didReceiveESSMQTTMessageNotification:) name:NOTIF_ESSMQTT_MESSAGE_RECEIVED object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didReceiveDeviceStatesMessageNotification:) name:NOTIF_DEVICE_STATES_RECEIVED object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didReceiveDeviceOnOffStateNotification:) name:NOTIF_DEVICE_ON_OFF_STATE_RECEIVED object:nil];
}
- (void)removeNotificationObserver
{
[[NSNotificationCenter defaultCenter] removeObserver:self name:NOTIF_ESSMQTT_MESSAGE_RECEIVED object:nil];
[[NSNotificationCenter defaultCenter] removeObserver:self name:NOTIF_DEVICE_STATES_RECEIVED object:nil];
[[NSNotificationCenter defaultCenter] removeObserver:self name:NOTIF_DEVICE_ON_OFF_STATE_RECEIVED object:nil];
}
私はこのUITableViewCell
以内に私のボタンや画像の状態をリフレッシュするためにNSNotification
を使用しています。
私が直面している問題は、NSNoticationが受信されるたびにawakeFromNib
が呼び出されることです。これは、私のボタンと画像の状態を元の状態にリフレッシュさせる原因になります。 奇妙なことに、私はそれまでにremoveFromSuperview
が呼ばれているのを見たことがありません。
は、だから私の質問は以下のとおりです。
NSNotification
を受信したときに、なぜ
awakeFromNib
が呼び出さなっている
?
私はちょうど
awakeFromNib
の下にオブザーバを追加しています。UITableViewCells
にはNSNotifications
を観察したいと思うときに正しいことをしていますか? (まあ、私はすべての時間これをやってきました。)
あなたは通知のためにオブザーバーを追加しましたか? –
@MangeshMurheこんにちは、親切にチェックして、私の投稿を編集しました。 –
オブザーバーを削除したいときは? –