何时使用自动释放变量? [复制]
Posted
技术标签:
【中文标题】何时使用自动释放变量? [复制]【英文标题】:When to use autoreleased variables? [duplicate] 【发布时间】:2013-10-10 13:47:27 【问题描述】:在什么情况下我应该使用自动释放变量? 以及以下哪种方法最好..
使用 obj= [[_className alloc]init]autorelease],
obj = [[_className alloc]init]
并释放obj为[obj release]
请帮忙。
当我想创建一个本地对象并在循环控制结构中使用时,我应该使用什么,如下所示。 .
for(int i = 0;i<10;i++)
_className obj = [[_className alloc]init];//Should I use autorelease here?
.
. // Use this obj..
.
[obj release];//If autoreleased is not used...
我应该从列出的选项中使用什么? 哪个应该更好和优化?
【问题讨论】:
你应该转移到ARC
,因为那样你就不需要发布任何东西了。
【参考方案1】:
最好的方法是使用 ARC 而不必担心。
但如果您不使用 ARC,我通常更喜欢案例 2。问题是当前的自动释放池何时会被耗尽。如果有一个需要大量工作的循环,或者我在一个库中不知道它将在其中运行的上下文,我可以控制何时释放对象而不是自动释放,并且它会在未来某个未知时间发生。我可以为循环创建自己的自动释放池,但我更喜欢显式释放。
我看到案例 1 使用的一个地方是在将对象分配给属性时,因此它将是使用自动释放而不是分配、分配给属性、释放的单行语句。
您是否有理由不使用 ARC?
【讨论】:
【参考方案2】:如果您不使用 ARC,那么当您不知道变量的范围时,我会说使用 autorelease。当您知道变量的范围时,请使用 release。
【讨论】:
以上是关于何时使用自动释放变量? [复制]的主要内容,如果未能解决你的问题,请参考以下文章