gpt4 book ai didi

ios - 弱 self 和委托(delegate)

转载 作者:行者123 更新时间:2023-12-01 22:20:29 27 4
gpt4 key购买 nike

众所周知,我们将声明一个可以打破强引用循环的弱委托(delegate)对象:

// MyObject.h

...

@property (nonatomic, weak) id<MyDelegate> delegate;

...

// ViewController.m

...

self.myObject.delegate = self;

...

我想知道:我们可以用strong声明委托(delegate),并为其设置一个weakSelf:
// MyObject.h

...

@property (nonatomic, strong) id<MyDelegate> delegate;

...

// ViewController.m

...

__weak typeof(self) weakSelf = self;
self.myObject.delegate = weakSelf;

...

最佳答案

委托(delegate)是 Cocoa 和 CocoaTouch 框架中使用的一种常见设计模式,其中一个类将实现某些功能的责任委托(delegate)给另一个类。这遵循关注点分离的原则,其中框架类实现通用功能,而单独的委托(delegate)实例实现特定用例。

建议使用较弱的委托(delegate)属性来帮助避免保留周期。有关解释检查@Bary Walk ans here .但是,在某些用例中,强引用是首选,甚至是必要的。 Apple 在 NSURLConnection 中使用它:一个 NSURLConnection 实例只能使用一次。完成后(失败或成功),它释放委托(delegate),并且由于委托(delegate)是只读的,它不能(安全地)重用。检查 this以前的SO问题供引用。

关于ios - 弱 self 和委托(delegate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45164501/

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