我有几个 NSArray,它们保存相互关联的 UIView 对象的集合(NSArray 是 soundView0、soundView1、soundView2 和 soundView3)。我希望能够将 BOOL 属性与将启用/禁用数组中的 UIViews 的整个数组相关联。
完成此操作的最干净/最正确的方法是什么?
我有几个 NSArray,它们保存相互关联的 UIView 对象的集合(NSArray 是 soundView0、soundView1、soundView2 和 soundView3)。我希望能够将 BOOL 属性与将启用/禁用数组中的 UIViews 的整个数组相关联。
完成此操作的最干净/最正确的方法是什么?
子类化NSArray
可能很困难,当您只需要一个额外的属性时,您可以通过类别和运行时函数获得另一个选项。在其上编写一个NSArray
添加属性的类别,并使用关联的对象为属性提供存储。这段代码就足够了,只需按照应用程序的命名约定重命名即可。
@interface NSArray (MyExtensions)
@property (nonatomic) BOOL myProperty
@end
@implementation NSArray (MyExtensions)
static char MyPropertyKey;
- (void)setMyProperty:(BOOL)myProperty
{
objc_setAssociatedObject(self, &MyPropertyKey, @(myProperty), OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
- (BOOL)myProperty
{
NSNumber *propertyNumber = objc_getAssociatedObject(self, &MyPropertyKey);
return [propertyNumber boolValue];
}
@end
您可以编写自己的 NSArray 子类,然后可以将 BOOL 属性附加到该子类