x、y、zの3つの異なるプロパティがあります。それらがすべてnilになったら、アクションを実行する必要があり、そのうちの1つが値!= nilに設定されている場合は、別のアクションを実行する必要があります。
私の現在の実装は次のとおりです。
@property (readonly) NSNumber *meta;
+ (NSSet *)keyPathsForValuesAffectingMeta
{
return [NSSet setWithObjects:@"x", @"y", @"z", nil];
}
- (void)awakeFromNib
{
[self addObserver:self forKeyPath:@"meta" options:0 context:NULL];
}
- (NSNumber *)meta
{
BOOL meta = x || y || z;
return [NSNumber numberWithBool:meta];
}
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
BOOL meta = [[self meta] boolValue];
if (meta != _flags.meta) {
if (meta) {
[self showSomeStuff];
}
else {
[self hideSomeStuff];
}
_flags.meta = meta;
}
}
それは機能しますが、私が現在見落としているこのようなものに対して、はるかに簡単でより良い解決策があることを願っています。ピンときた