我刚刚注意到调用addObject:
NSMutableArray 不会访问该数组的设置器。
例如,对于 NSMutableArray self.myArray
,[self.myArray addObject:object]
不[self setMyArray:array]
用于添加对象。
以前我一直在使用自定义 setter 和 getter 在分配之前检查分配;例如,如果我想要一个只接受 class 对象的数组MyClass
,我会执行以下操作:
- (void)setMyArray:(NSMutableArray *)myArray
{
for (id object in myArray)
{
if (![object isKindOfClass:[MyClass class]]) return;
}
_myArray = myArray;
}
- (NSMutableArray *)myArray
{
if (!_myArray) _myArray = [[NSMutableArray alloc] init];
_myArray = myArray;
}
addObject:
通过,removeObject:
和其他可能绕过 setter 的类似功能更改数组时,如何实现相同的功能?