English 中文(简体)
NSMutableArray阵列WithCapacity v. initWithCapacity
原标题:NSMutableArray arrayWithCapacity vs initWithCapacity
最佳回答

你们通常选择的是,是否要拥有比现行方法寿命更长的物体(例如,将物体分配给某种静态或直接分配给某个人)。 在此情况下,你可以使用一切照旧方法,因为你知道你本希望拥有这种方法。 如果你只计划将其用于现行方法的范围,或者你将它分配给像财产一样管理的东西,那么你可能会使用方便的方法。

当你知道你将拥有你正在制造的物体时,所有物体/用途的吸引力总是比方便/可持续的方式更有效率,因为后者必须基本上全心全意/自动释放该物体,然后在归还时保留该物体。

在你分配住所时,你也可以使用直接的冲积/内积方法,不需要/不需要处理自动释放库。

问题回答

阵列能力:已经对其适用自动释放。

能力:明确保留,需要释放。 由于你通常称它为[[A alloc] init...],这将引发一个灯泡,“我需要为此管理记忆,”除“允许”为“新”和“范围”之外的其他类似魔法,正如你在记忆管理指南中宣读的。 但是,从你的问题来看,你非常理解这一原则。

你是正确的,你应当保持记忆足迹的管理和低度,但这并不意味着你必须始终明确地做事。 正如尼克所说,使用自动释放工厂方法的一个使用案例是,你将自动释放工厂方法作为参数。

另一个例子是,当你在NSDictionary 或NSArray 等收集中添加一些内容时,可以采用自动释放工厂方法制造“隐蔽”,因为收集“接手”保留。 (三) 在收集时保留,在删除时予以释放。

你可以辩称:

Blah *blah = [Blah blahWithSomething];
[myMutableArray addObject:blah];

更清洁的是类型,而不是类型。

Blah *blah = [[Blah alloc] initWithSomething];
[myMutableArray addObject:blah];
[blah release];

在第1起案件中,你无需担心发出释放呼吁。 倒数是,当你多次在同一跑道上做事时,第一个病例的记忆足迹越大,就是一个临时/流离阵列物体,在跑道结束时消失。 但是,如果它是一个小的物体,没有像一个常见的情况那样做,保留时间更长,其足迹就相同。

在此情况下,我试图遵守以下规则,以避免与记忆有关的(=“一切新生” b:

  • if you are passing that array as a parameter, then you can use the factory method no problem, since it s the responsibility of the accepting function to retain/release it
  • if you want to keep working with the object, use the initialization method and release the object at the end




相关问题
Code sign Error

I have created a new iPhone application.I have two mach machines. I have created the certificate for running application in iPhone in one mac. Can I use the other mac for running the application in ...

ABPersonViewController Usage for displaying contact

Created a View based Project and added a contact to the AddressBook using ABAddressBookRef,ABRecordRef now i wanted to display the added contact ABPersonViewController is the method but how to use in ...

将音频Clips从Peter改为服务器

我不禁要问,那里是否有任何实例表明从Peit向服务器发送音响。 I m不关心电话或SIP风格的解决办法,只是一个简单的袖珍流程......

• 如何将搜查线重新定位?

我正试图把图像放在搜索条左边。 但是,问题始于这里,搜索条线不能重新布署。

热门标签