rak*_*hNS 2 iphone objective-c nsmutablearray
我创建了一个NSMutableArray对象
NSMutableArray *array = [[NSMutableArray alloc]init];
Run Code Online (Sandbox Code Playgroud)
和使用的方法componentsSeperatedByString:as
array = [myString componentsSeperatedByString:@"++"];
Run Code Online (Sandbox Code Playgroud)
但当我在阵列上执行操作时,
[array removeAllObjects];
Run Code Online (Sandbox Code Playgroud)
我得到了异常,例如"removeAllObjects无法识别的选择器发送到实例".
我通过修改代码解决了这个问题,
NSArray *components = [myString componentsSeperatedByString:@"++"];
array = [NSMutableArray arrayWithArray:components];
Run Code Online (Sandbox Code Playgroud)
我之后可以执行像这样的操作
[array removeAllObjects];
Run Code Online (Sandbox Code Playgroud)
我怀疑为什么NSMutableArray自动转换为NSArray?如何避免这样的自动类型转换,以防止异常?提前致谢....
您对Objective-C的工作原理有一个错误.这一行:
NSMutableArray *array = [[NSMutableArray alloc]init];
Run Code Online (Sandbox Code Playgroud)
分配并初始化数组,指针array指向此对象.现在,这一行:
array = [myString componentsSeperatedByString:@"++"];
Run Code Online (Sandbox Code Playgroud)
使array指针指向componentsSeparatedByString方法返回的新数组.当您执行此操作时,您将丢失对已分配和未命中的可变数组的引用,如果不使用ARC,则会创建内存泄漏.