我正在进行一些代码清理,并且想知道是否有一个官方或非官方标准,以下哪个选项应该更好。
基本问题是我必须做一些视图更改逻辑。应该在awakeFromNib和收到通知时调用此代码。为了防止两次写相同的代码,最好选择下面的选项。
// Option 1
- (void)receiveThemeChangeNotification:(NSNotification *)note {
[self updateInterfaceWithTheme];
}
- (void)updateInterfaceWithTheme {
}
- (void)awakeFromNib {
[self updateInterfaceWithTheme];
}
// Option 2
- (void)receiveThemeChangeNotification:(NSNotification *)note {
[self updateInterfaceWithTheme];
}
- (void)awakeFromNib {
[self receiveThemeChangeNotification:nil];
}
// Option 3
// Registered as the selector for the notification directly
- (void)updateInterfaceWithTheme {
}
- (void)awakeFromNib {
[self updateInterfaceWithTheme];
}
答案 0 :(得分:0)
答案非常简单:如果您想发送包含通知的一些数据(例如id
,playerObject
,name
,anything
),请使用NSNotification
作为一个参数。
据我所知,您不需要任何参数,因为您不需要NSNotification
中的任何内容。
selector
与将其添加到按钮或其他任何内容相同。如果您需要知道谁是发件人,或者您需要在该通知中使用任何类型的信息 - 使用参数。否则你可以跳过它,有时候(比如在你的情况下,你称之为不必要的"桥接"功能),这是更好的选择。
答案 1 :(得分:0)
在您不使用note
进行任何操作的情况下,我会使用选项1.还有一个选项:
-(void)registerMethod
{
__block __weak id observer;
__typeof__(self) __weak weakSelf = self;
observer = [[NSNotificationCenter defaultCenter] addObserverForName:@"Name"
object:nil
queue:nil
usingBlock:^(NSNotification *note) {
if( nil != weakSelf )
{
[weakSelf updateInterfaceWithTheme];
}
[[NSNotificationCenter defaultCenter] removeObserver:observer];
}];
}
-(void)awakeFromNib
{
[self updateInterfaceWithTheme];
}
- (void)updateInterfaceWithTheme
{
}