菜鸟教程小白 发表于 2022-12-13 04:51:44

弱与强的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]
查看完整版本: 弱与强的iOS方法