objective-c - NSArray 解析有什么不同?

标签 objective-c ios

下面代码段中Parsing的区别是什么。 哪些代码段在解析中更快?

NSArray *arr = [[NSArray alloc] initWithObjects:@"Apple",@"Macbook", nil];

NSMutableArray *data = (NSMutableArray *)arr;

(和)

NSArray *arr = [[NSArray alloc] initWithObjects:@"Apple",@"Macbook", nil];

NSMutableArray *data = [NSMutableArray arrayWithArray:arr];

最佳答案

你在两个片段中都有同样的错误,你为对象分配了内存,然后为数据分配了其他东西,这让你失去了之前的(并且有内存泄漏),例如这个:

NSMutableArray *data = [[NSMutableArray alloc] init];
data = [NSMutableArray arrayWithArray:arr];

应该是

NSMutableArray *data = [NSMutableArray arrayWithArray:arr];

现在是问题本身:

  1. 第一种情况是个坏主意,你转换了 NSArray,但你不能修改它,因为你并没有真正改变它的类型,只是将它分配给 NSMutaleArray 指针。

  2. 第二种情况将创建一个新的可变 NSMutableArray,其中包含 NSArray 的内容,这很酷,您现在可以更改此数组。

关于objective-c - NSArray 解析有什么不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10233486/

相关文章:

ios - iOS8 中的扩展 - 由于没有系统应用程序而终止

iphone - 从 iphone 的不同 View Controller 调用函数

ios - 如何在iOS10上使用“返回应用”按钮

ios - 用 Swift 初始化 UIViewController 的子类?

ios - 在 xcode 6 中为 ios 8 启动图像

ios - subview 的框架向下移动

ios - UINavigationItem:标题和提示的区别

objective-c - Objective-C - 具有重复键的键值对集合

objective-c - 如何创建基本的 osx prefPane?

objective-c - 无法从文档 Controller 填充 NSMenu