ios - 了解临时对象的使用
<p><p>也许是一个愚蠢的问题,但我想我还是会问这个问题,因为我仍在努力解决内存管理问题。</p>
<p>这是吗:</p>
<p>1.</p>
<pre><code>ViewController *tViewController = [ initWithNibName:@"ViewController" bundle:nil];
self.viewController = tViewController;
;
</code></pre>
<p>比这更好:</p>
<p>2.</p>
<pre><code>self.viewController = [[ initWithNibName:@"ViewController" bundle:nil] autorelease];
</code></pre>
<p>如何以及为什么?</p>
<p><strong>编辑:</strong></p>
<p>好的,首先,我已经安全地释放了我所拥有的一切。我可以看到这种情况发生。 </p>
<p>但在第二种情况下,它是一个延迟发布,那么我如何确定它何时消失?这个 <code>autorelease</code> 东西让我很困惑。</p>
<p>这不是程序中可能发生此类事情的唯一实例。当我想让我创建的特定对象保持活力直到天知道什么时候,我该怎么办?我的<code>autorelease</code>呢?但如果它在错误的时间消失了呢?那我该怎么办? </p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>两者的最终结果是相同的,但它们到达那里的方式不同。在这两种情况下,您都在创建一个稍后发布的临时引用。</p>
<p>第一个版本在发布时立即释放实例(确定性)——尽管由于 self.viewController 可能是一个强引用,实例不会在发布调用时被释放。</p>
<p>当当前自动释放池被释放时,第二个版本会在未来某个时间点(非确定性)释放实例。再一次 - 如果 self.viewController 持有对它的引用,则不会被释放。</p></p>
<p style="font-size: 20px;">关于ios - 了解临时对象的使用,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/17088602/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/17088602/
</a>
</p>
页:
[1]