【发布时间】:2011-06-22 22:01:59
【问题描述】:
我正在用 Objective-C 编写我的第一步。
我遵循了一些示例和官方文档,并使用了自动释放的对象*,而没有明确声明 NSAutoReleasePool。
* 我的意思是自动释放的对象:SomeClass *obj = [SomeClass someClass];
这样可以吗?
会不会导致内存问题?
声明 NSAutoReleasePool 是否更有效?
编辑:我在代码示例中犯了一个错误,我的意思是通过它的类工厂方法而不是allocing 它的实例来获取一个对象。这个工厂方法[经常|总是]返回自动释放的对象,对吧?例如:[NSString stringWithCString:x]
【问题讨论】:
-
当心那些说某些方法返回自动释放对象的文本(包括许多关于 Stack Overflow 的帖子)。有时他们会,有时他们不会。将它们视为返回不属于调用者的对象的方法会更加准确和高效。
-
对。所以,在调用范围内使用它们是安全的,除此之外,它应该是
retained,对吧?
标签: objective-c xcode cocoa macos