或者,为什么我没有在我的暑假中使用retainCount 这篇文章的目的是要详细介绍一下这个臭名昭着的方法的原因和retainCount ,以便整合围绕SO的相关信息。 基础知识:不使用retainCount的官方原因是什么? 有没有什么情况可能有用? 应该做些什么呢?**随意编辑。 历史/解释:为什么苹果在NSObject协议中提供这种方法,如果它不打算被使用? 苹果的代码是否依赖于retainCount用于某种目的? 如果是这样,为什么不把它藏在某处? 为了更深入的理解:对象可能具有不同于用户代码假设的保留数的原因是什么? 你能举出框架代码可能使用的标准程序的例子吗? 是否有任何已知的情况下保留计数总是不同于新用户可能期望的? 还有什么你认为值得关于retainCount ? *对于Objective-C和Cocoa来说,新的编程人员经常会对参考计数scheme进行纠正,或者至less是误解。 教程的解释可能会提到保留计数,根据这些解释,当您调用retain , alloc , copy等等时,向上调一,当您调用release (以及在将来的某个时刻调用autorelease )。 一个正在萌芽的Cocoa黑客Kris可以很容易地认识到,检查一个对象的保留数对于解决一些内存问题是有用的,而且你会发现在每个对象上有一个叫做retainCount ! 克里斯在一些物体上调用retainCount ,这个值太高了,太低了,到底是怎么回事?! 所以Kris在SO上做了一个post,“我的memory management出了什么问题? 然后一群<大写>,<大写字母下降,说:“不要那样做,不能靠结果”,这是好的,但是我们无畏的编码者可能需要更深的解释。 我希望这将成为一个常见问题解答,我们的任何专家都倾向于写一个好的信息散文/讲座页面,当新的cocoa头在怀疑retainCount时可以指出。 **我不想把这个过于宽泛,但是具体的经验或者关于validation/debugging的文档保留和释放配对在这里可能是合适的。 ***在虚拟代码中; 显然普通大众不能访问苹果的实际代码。