苹果改变了自己的内存管理规则,如果你使用名称以“黄金”或“新”或包含一个方法创建命名约定

问题描述:

正如从之前苹果改变了自己的内存管理规则,如果你使用名称以“黄金”或“新”或包含一个方法创建命名约定

你把一个对象的所有权Cocoa Memory Management Rules规定“复制”(例如,alloc,newObject或mutableCopy),或者如果您发送一个保留消息。

2010年12月后还没有看过,但自从那时以来改为

你“创造”使用名称以“黄金”的方法的对象,“新”,“复制“或”mutableCopy“(例如,alloc,newObject或mutableCopy)。

请注意,现在需要“复制”作为前缀。这导致了一些来自Clang静态分析器的与内存有关的警告:(搜索完互联网之后,我还没有得出结论,为什么会发生这种变化,因为这是iOS内存管理的基础之一。

有谁知道为什么吗?谢谢!

有包含“复制”,在他们的文字一些方法,但明显不复制的方法。例如,+[NSData dataWithBytesNoCopy:length:],这是当然的,可以使用的注解静态分析器来通知非标准行为,但总的来说,我怀疑几乎没有人(你自己除外)曾经写过一个复制方法,它并不是从copymutableCopy开始,所以他们决定只是简化一下。

坦白地说,我很高兴他们这样做了,因为我遇到了相反的问题,其中一个方法包含单词“复制”,但不打算返回拥有参考。

+0

+1肯定是这样的。这不是规则的改变,只是在文件中的澄清。 – 2011-04-04 03:10:30

+0

我想他们不能称它为'+ [NSData dataWithBytesInPlace:length:]'? – 2011-04-04 03:12:08

+0

对我来说还不够:) – LaN 2011-04-04 03:15:03