gpt4 book ai didi

ios - Cocoa dispatch_once 每个实例

转载 作者:可可西里 更新时间:2023-11-01 03:49:03 24 4
gpt4 key购买 nike

如何使用 dispatch_once, 让给定的代码在每个实例生命周期内执行一次。

等同于在对象内部拥有一个属性,并像这样使用它:

- (void)viewWillAppear:(..).. {

// ...

if (self.isDispatched == NO) {
// ...
self.isDispatched = YES;
}

}

但我不想使用额外的属性,而是 dispatch_once_t 或类似的属性。

最佳答案

无法满足您的要求。 dispatch_once 只能用于以前从未写入过的内存,并且您无法通过实例变量来保证这一点。格雷格·帕克 says so ,他就是那个知道的人。

相反,使用问题中的代码,但将其包装在 @synchronized block 中。

如果你真的想避免添加实例变量,你可以使用一个单独的单例来管理一个可变集。您必须向它注册实例并在释放时删除它们。确保这个辅助类只包含弱引用;参见 NSMapTableNSMapTableWeakMemory

关于ios - Cocoa dispatch_once 每个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25201401/

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