【发布时间】:2012-01-14 16:10:33
【问题描述】:
我对 Cocoa/Objective-C 还是很陌生,所以我希望我能解释一下我的问题。
我在 Xcode 4.2 中创建了一个垃圾收集应用程序我有我的应用程序委托,它创建了一个授权对象(我的类),这个对象将创建并呈现一个密码对象(我的类/xib)。
密码窗口接受输入并批准或拒绝并关闭。从那里,Authorize 对象将关闭并将控制权返回给应用程序委托。当密码 nib 显示为模态窗口时。
作为测试,我在每个对象初始化和最终确定时都包含一个 NSLog 语句。出于某种原因,我的 Password 对象尚未最终确定。授权对象已完成。
我什至消除了 Authorize 对象并直接从应用程序委托创建了密码 - 仍然没有最终确定。
我已经研究并尝试了我能想到的一切/任何事情来完成这个对象(我假设如果它没有完成,它不会释放这个对象的内存)。
任何人都可以提出一些我可能忽略的东西吗?
更新:
经过更多的尝试,我发现了问题所在。我创建了一个只有 AppDelegate 和 WindowController/Nib 文件的新项目。对 GC 和构建使用相同的设置,我能够消除所有问题,直到发现问题。
我的密码笔尖中有一个 NSSecureTextfield。无论出于何种原因,当窗口关闭时,它都没有释放。
我在关闭窗口之前添加了行 [textField removeFromSuperview] 并调用了 finalize 方法。
我不确定这是否是最好的方法,但它似乎有效。
对于 ARC 选项,我的印象是该项目需要以 10.7 或更高版本为目标才能使用 ARC。我希望将 10.5 作为最低目标。
也许我错了。如果我是,请告诉我。
【问题讨论】: