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