Tha*_*nks 2 iphone cocoa-touch memory-management objective-c uikit
据我所知,只有"方便"方法返回带有-autorelease的创建对象,因此接收者不负责该对象的内存.但是因为Apple说当你使用一个名为"new","alloc","create"或"copy"的方法时,你负责释放方法返回的对象,我认为这些方法应该不 - 自动释放这些物体.否则它们将是"方便的",并且只要他没有 - 获得所接收的物体,接收者将根本不负责任.我做对了吗?
但是,标题中的问题答案是肯定的:
只有"方便"方法返回带有-autorelease的创建对象
这绝对不是真的.任何没有标记词之一的方法(或具有其他特定文档的方法)都假定返回一个您没有保留引用的对象.方便构造函数当然属于该组,但Cocoa中的大多数其他方法也是如此.
返回一个你不负责释放的对象是Cocoa中的规则,而不是例外.
这一点在Apple关于Cocoa内存管理的在线文档中非常明确地阐述; 你应该彻底阅读这些文件.您在本网站上提出的许多问题都会在那里得到解答,而且它是最权威的来源.
经验法则是你拥有(因此必须释放)你的任何对象
*new将alloc和init组合到一个方法中.
便捷方法返回自动释放的对象.这些对于您收到它们的方法的范围有效,并且可以传递回调用方法(通常).如果你想让它们保持更长时间,你需要保留它们.
归档时间: |
|
查看次数: |
466 次 |
最近记录: |