0

我有几个 NSArray,它们保存相互关联的 UIView 对象的集合(NSArray 是 soundView0、soundView1、soundView2 和 soundView3)。我希望能够将 BOOL 属性与将启用/禁用数组中的 UIViews 的整个数组相关联。

完成此操作的最干净/最正确的方法是什么?

4

2 回答 2

6

子类化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
于 2012-09-23T06:27:50.320 回答
-1

您可以编写自己的 NSArray 子类,然后可以将 BOOL 属性附加到该子类

于 2012-09-22T17:36:33.293 回答