Objective c NSMultableArray能否说明NSMultableArray中的哪个对象?

Objective c NSMultableArray能否说明NSMultableArray中的哪个对象?,objective-c,arrays,Objective C,Arrays,NSMutableArray可以存储每个NSObject,但是我可以提到NSMutableArray只能获取存储我的项目,例如,只存储NSString的NSMutableArray吗? 我记得java数组可以做到这一点,objective C数组可以做到类似的事情吗?谢谢 你可以这样试试- NSMutableArray *arr = [[[NSMutableArray alloc] init] autorelease]; if([obj isKindOfClass:[NSString class

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

你可以这样试试-

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

这样,您只能将
NSString
添加到arr中。

您可以这样尝试-

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

通过这种方式,您只能将
NSString
添加到arr中。

默认情况下不是这样。NSArray及其可变副本只存储指向obj-c对象的指针。这些对象可以是任何类型的。这将取决于您是否确保只有NSString进入您的数组


您可以潜在地将NSArray子类化并重写addObject:方法,以便在尝试添加非NSString对象时引发异常

不是默认情况,不是。NSArray及其可变副本只存储恰好指向obj-c对象的指针。这些对象可以是任何类型的。这将取决于您是否确保只有NSString进入您的数组


您可以潜在地将NSArray子类化并重写addObject:方法,以便在尝试添加非NSString对象时引发异常

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

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

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

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

那么在数组中除了NSString之外,您不需要任何其他对象了?是这样吗?那么您不希望数组中除了NSString之外还有任何其他对象?是这样吗?