【发布时间】:2009-08-16 14:45:33
【问题描述】:
我正在使用 -initWithObjectsAndKeys 创建一个 NSDictionary:。
对于我提供给该字典的每个对象,我都会调用一个自制方法 -createFooBarObject,它将创建并返回该对象。
现在的问题:根据定义,create 方法不应该释放对象,因为它必须返回它,并且调用者负责释放它。但是在这里,调用者没有机会释放它,因为 NSDictionary 立即将其吸入。我在 -initWithObjectsAndKeys: 对象和键列表中调用该创建方法,因此在添加到字典后我没有机会调用 -release。好吧,我可以遍历字典并将它们全部释放。但这很丑。
那么在 -createFooBarObject 方法返回之前 -autorelease 是否有效?我不确定-autorelease 会在什么时候发生。但它不应该在字典创建并保留该对象之前发生。有什么想法吗?
【问题讨论】:
-
发布一段代码会得到一个更具体的答案。
标签: objective-c cocoa cocoa-touch memory-management