UIButton 的 setTitle 方法是否保留作为参数传递的 NSString ?
我想我可以依靠该属性定义为:
属性(非原子,只读,保留) UILabel *titleLabel
在这种情况下,我认为它确实保留了字符串。
谢谢, Apple92
UIButton 的 setTitle 方法是否保留作为参数传递的 NSString ?
我想我可以依靠该属性定义为:
属性(非原子,只读,保留) UILabel *titleLabel
在这种情况下,我认为它确实保留了字符串。
谢谢, Apple92
除非另有说明,否则您可以依靠框架类来保留他们需要的东西。这是 Cocoa内存管理规则的一部分。你应该阅读那个文档并让它沉入其中,因为一旦你理解了它,基本上你所有的内存管理问题都会消失——相反,如果你不花时间去理解那个文档,你总是会感到不确定。幸运的是,这很简单。
另外,我会小心不要过分依赖别人告诉你规则。特别是在 Stack Overflow 这样的非正式场合,人们倾向于简化和说错话,从而导致误解——同时,多年来,官方规则已经被校对了很多次。
Yes - you've pretty much answered your own question there.
Not all API's retain as the original NSString may change in some way - one API may receive an NSString reference, but it's actually an NSMutableString, for exapmle.
The Google coding standards for Objective C has a section about this, here