弱与强的iOS方法
<p><p>我一直在阅读有关使用 ARC 时强和弱的信息。现在我想我对属性的理解要好一些。</p>
<p>但我刚刚读到我可以在方法中使用 __weak 和 __strong 。但我不确定我是否完全明白这一点。我的使用方法是:</p>
<pre><code>- (void)someMethod{
__weak NSString *text = ;
etc...
}
</code></pre>
<p>在上面的示例中,我使用了弱,因为否则它将是标准的强,我不需要指向它的强指针(我认为)。因为文本字段本身会保留它?</p>
<p>我的问题是我是否理解这个概念,使用 __weak 代替默认的 __strong 是否有优势?</p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>是的,默认情况下 <code>text</code> 将是强引用,只要引用存在,对象 (<code>self.textField text</code>) 就会保持活跃。但是,使用 __weak 引用,对象的生命是由 <code>self.textField</code> 决定的。</p>
<p>然而,声明 <code>__weak NSString *text</code> 并没有真正的内存优势(至少在这种特殊情况下)。所以,我建议使用默认行为(<em>NOT</em> 将文本声明为 <code>__weak</code>)</p>
<pre><code>NSString *text = ;
</code></pre>
<p>通常,建议使用 <code>__weak</code> 来避免循环引用,例如<code>委托(delegate)</code></p>
<pre><code>@property (nonatomic, weak) id delegate;
</code></pre></p>
<p style="font-size: 20px;">关于弱与强的iOS方法,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/19519899/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/19519899/
</a>
</p>
页:
[1]