gpt4 book ai didi

弱与强的 iOS 方法

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:45:02 24 4
gpt4 key购买 nike

我一直在阅读有关使用 ARC 时的强项和弱项的信息。现在我想我比属性更好地理解了一点。

但是我刚刚读到我可以在方法中使用 __weak 和 __strong 。但我不确定我是否完全明白这一点。我的使用方法是:

- (void)someMethod{
__weak NSString *text = [self.textField text];
etc...
}

在上面的示例中,我使用了 weak ,因为否则它将是标准的 strong 并且我不需要有指向它的强指针(我认为)。因为文本字段本身会保留它?

我的问题是我是否理解这个概念,使用 __weak 而不是默认的 __strong 是否有优势?

最佳答案

是的,默认情况下 text 将是强引用,只要引用处于事件状态,对象 (self.textField text) 就会保持事件状态。但是,使用 __weak 引用时,对象的生命周期由 self.textField 决定。

但是,声明 __weak NSString *text 并没有真正的内存优势(至少在这种特殊情况下)。所以,我建议使用默认行为(NOT 将文本声明为 __weak)

NSString *text = [self.textField text];

通常,建议使用 __weak 来避免循环引用,例如委托(delegate)

@property (nonatomic, weak) id delegate;

关于弱与强的 iOS 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19519899/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com