2011-07-26 18 views

回答

4

不,这不是问题。 immutableData将被初始化为mutData中的数据。

10

这是完全没关系,而事实上是dataWithData:的主要用途之一 - 创建一个可变对象的不变副本*

NSData也符合NSCopying protocol,**,这意味着你可以改为使用[mutData copy]。不同的是,dataWithData:返回一个你不拥有的对象(它是自动发布的),而per memory management rules,copy创建一个对象,其对象的内存是负责。 dataWithData:相当于[[mutData copy] autorelease]

因此,您可以选择dataWithData:copy,这取决于您对生成对象的生命周期的要求。


*这也适用于其他类的类似方法,其具有可变的子类,例如,+[NSArray arrayWithArray:]

**请参阅Core Competencies Guide中的"Object Copying"

相关问题