gpt4 book ai didi

objective-c - Apple 更改了命名约定的内存管理规则

转载 作者:太空狗 更新时间:2023-10-30 03:51:32 24 4
gpt4 key购买 nike

Cocoa Memory Management Rules 中所述从前

You take ownership of an object if you create it using a method whose name begins with “alloc” or “new” or contains “copy” (for example, alloc, newObject, or mutableCopy), or if you send it a retain message.

2010 年 12 月之后就没看过了,但从那时起就改成了

You “create” an object using a method whose name begins with “alloc”, “new”, “copy”, or “mutableCopy” (for example, alloc, newObject, or mutableCopy).

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

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

最佳答案

有一些方法在他们的文本中包含“复制”,但显然不是复制方法。例如,+[NSData dataWithBytesNoCopy:length:] .当然,可以使用静态分析器的注释来告知非标准行为,但总的来说,我怀疑几乎没有人(你自己除外)编写过不以 copy 开头的复制方法。或 mutableCopy ,所以他们决定简化事情。

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

关于objective-c - Apple 更改了命名约定的内存管理规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5534197/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com