Objective c NSMultableArray能否说明NSMultableArray中的哪个对象?
NSMutableArray可以存储每个NSObject,但是我可以提到NSMutableArray只能获取存储我的项目,例如,只存储NSString的NSMutableArray吗?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
我记得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是一个类“集群”,对子类来说并不明显
- 使用检查正确类型的特定方法。您将拥有该类型的编译时强制
- 并检查元素类型。强烈建议不要这样做,因为NSArray/NSMutableArray是一个类“集群”,对子类来说并不明显
- 使用检查正确类型的特定方法。您将拥有该类型的编译时强制