NSMultableArray可以提到NSMultableArray中的哪个对象?

时间:2011-11-04 07:30:33

标签: objective-c arrays

NSMutableArray可以存储每个NSObject,但是我可以提到NSMutableArray只能存储我的项目,例如,只存储NSString的NSMutableArray吗? 我记得java数组可以做到这一点,目标C数组可以做类似的事情吗?谢谢。

3 个答案:

答案 0 :(得分:1)

Objective-C在NSArray / NSMutableArray上没有这种通用约束。因此,您有两个解决方案:

  • Subclass NSArray/NSMutableArray并检查元素类型。强烈建议不要这样做,因为NSArray / NSMutableArray是一个类“集群”,对子类来说并不明显。
  • Create a category使用检查正确类型的特定方法。您将具有该类型的编译时强制执行。

答案 1 :(得分:0)

你可以这样试试 -

NSMutableArray *arr = [[[NSMutableArray alloc] init] autorelease];
if([obj isKindOfClass:[NSString class]])
    [arr addObject:obj];

这样您最终只会向您的arr添加NSString

答案 2 :(得分:0)

不是默认情况下,不是。 NSArray及其可变对应物只存储指向obj-c对象的指针。这些对象可以是任何类型。你应该确保只有NSString才能进入你的阵列。

您可以潜在地继承NSArray并覆盖addObject:方法,以便在尝试添加非NSString对象时抛出异常。