【发布时间】:2011-10-13 11:51:23
【问题描述】:
我偶然发现了这个 Objective-C 的片段:
NSNumber *theBalance =
[[[NSNumberFormatter alloc] init]
numberFromString: [textField text]];
这似乎泄露了NSNumberFormatter。在 C++ 中,我会做以下两件事之一:
- 为
NSNumberFormatter使用auto(即堆栈)存储 - 使用 RAII(例如
shared_ptr)来管理NSNumberFormatter的生命周期
在 Objective-C 中,这些选项似乎都不可能。我在堆栈上试过:
NSNumberFormatter fmt;
但这不能编译。据我所知,Objective-C 中没有直接等效的 RAII。作为一个主要是 C++ 的程序员,我可能从错误的角度看待这个问题,所以:
- 在一般情况下,处理像
NSNumberFormatter这样的对象生命周期的正确、惯用(现代)Objective-C 方法是什么?我真的必须自己明确地这样做吗? - 在具体情况下,有没有更好的办法解决实际问题?
【问题讨论】:
标签: iphone objective-c ios memory-management raii