UIButton的setTitle方法是否保留作为参数传递的NSString?
我想我可以依赖这个属性被定义为:
的事实属性(非原子,只读,保留)UILabel * titleLabel
在这种情况下,我认为它确实保留了字符串。
谢谢, Apple92
答案 0 :(得分:1)
除非另有说明,否则您可以依靠框架类来保留他们需要的东西。这是Cocoa memory management rules的一部分。您应该阅读该文档并让它沉入其中,因为一旦您理解了它,基本上所有的内存管理问题都会消失 - 相反,如果您没有花时间理解该文档,您将总是感到不确定。幸运的是,这很简单。
另外,我会过分依赖别人告诉你的规则。特别是在像Stack Overflow这样的非正式场合,人们倾向于简化和错误说话,从而导致误解 - 同时,官方规则多年来已经多次校对。
答案 1 :(得分:0)
是的 - 你已经在那里回答了你自己的问题。
并非所有API都保留,因为原始的NSString可能会以某种方式发生变化 - 一个API可能会收到一个NSString引用,但它实际上是一个NSMutableString,用于exacmle。
Google coding standards for Objective C有一个关于此内容的部分here