gpt4 book ai didi

objective-c - 在 Objective-C block 中使用 typeof(self) 声明强引用

转载 作者:太空狗 更新时间:2023-10-30 03:31:37 27 4
gpt4 key购买 nike

使用 weakSelf/strongSelf 模式来避免在 block 中创建循环保留,这段代码很常见:

typeof(self) __weak weakSelf = self;
void (^block)() = ^{
typeof(weakSelf) strongSelf = weakSelf;
// ...more code...
};

问题是,将第二个 typeof(weakSelf) 更改为 typeof(self) 是否会导致 self 在 block 中被捕获?

例如:

typeof(self) __weak weakSelf = self;
void (^block)() = ^{
typeof(self) strongSelf = weakSelf; // does using typeof(self) here end up capturing self?
// ...more code...
};

如果 self 没有被捕获,是否有任何理由偏爱一种方式?

最佳答案

不应该。如果是,则为编译器错误。

typeof 表达式实际上并不引用变量 self 或其值。它严格地是对表达式类型的引用,而不是它的值。该表达式严格来说是一个编译时构造,不会存在于编译代码中。

就个人而言,我更喜欢 typeof(self),但我认为没有强烈的论据来支持其中一个。

关于objective-c - 在 Objective-C block 中使用 typeof(self) 声明强引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26246572/

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