NSMutableArray arrayWithArray:与initWithArray:

nod*_*nja 3 cocoa-touch objective-c nsmutablearray

这些都适用于我的应用程序,没有任何明显的区别:

1)

theArray = [[NSMutableArray alloc] initWithArray:[NSKeyedUnarchiver unarchiveObjectWithData:theData]];
Run Code Online (Sandbox Code Playgroud)

2)

theArray = [NSMutableArray arrayWithArray:[NSKeyedUnarchiver unarchiveObjectWithData:theData]];
[theArray retain];
Run Code Online (Sandbox Code Playgroud)

但是,它们真的相同吗?(1)有一个alloc语句,而(2)没有.一个比另一个好吗?

ken*_*ytm 5

效果是一样的.但是(2)效率较低(方便的方法= alloc + init + autorelease).

  1. alloc→init
  2. alloc→init→autorelease→retain

首选方法是不复制数组.

theArray = [[NSKeyedUnarchiver unarchiveObjectWithData:theData] retain];
Run Code Online (Sandbox Code Playgroud)

顺便说一句,我注意到你一直在问很多关于iPhone OS开发的基本问题.请先阅读这些教程.

  • 肯尼,如果StackOverflow是网上最好的资源,即使对于"初学者"问题,也不是很酷吗?在很多方面,它是; 但是,将这些类型的问题重定向到您最喜欢的教程并不符合这一愿景.由你决定. (16认同)
  • 同意.我是一名经验丰富的编码员,拥有不错的应用程序,我仍然带着这样的问题来到这里.我最不喜欢的答案是"我们不是来教你的程序"......真的吗?因为那你为什么来这里?因为我在这里学习并帮助人们学习.通常情况下,我可以快速回答一些事情,而不是等待30-60分钟的教程,该教程从制作ios项目开始. (7认同)