gpt4 book ai didi

iphone - 更新 block 中的 NSUInteger 属性。警告 : Block will be retained by

转载 作者:可可西里 更新时间:2023-11-01 17:10:42 25 4
gpt4 key购买 nike

我有一个 NSUInteger 定义为这样的属性:

@property (nonatomic, assign) NSUInteger wordDisplayed;

我需要将它作为一个属性,因为我需要从其他方法和类中读取/写入这个变量。

当试图在 block 中更改此属性的值时,我收到以下警告:

在此 block 中强烈捕获“self”很可能导致保留周期

“ block 将由捕获对象强烈保留的对象保留”

如何在 block 中更新此变量属性?

我正在使用的 block 位于修改后的 UIActionSheet 中,我用它来使 UIActionSheet 接受 block 。

https://github.com/zoul/Lambda-Alert

这是我的代码示例:

 sectionHeadersAct = [[LambdaSheet alloc] initWithTitle:@"Book 2 Lesson 1"];
[sectionHeadersAct addButtonWithTitle:@"D. E. F. & G. Teach New Letters" block:^{
wordDisplayed = 15; //This is where I'm trying to change the value
}];

[sectionHeadersAct showInView:self.view];

最佳答案

这篇文章处理这个特定问题:https://stackoverflow.com/a/8159567/656036

总结一下:您应该使用指向自身的弱指针。如果你使用 ARC,你可以通过在你的 block 之前写这个来解决这个问题:

__weak MyObject *weakSelf = self;

并在 block 本身中使用 weakSelf 而不是 self。

编辑试试这个:

__weak ViewController *weakSelf = self;
sectionHeadersAct = [[LambdaSheet alloc] initWithTitle:@"Book 2 Lesson 1"];
[sectionHeadersAct addButtonWithTitle:@"D. E. F. & G. Teach New Letters" block:^{
weakSelf.wordDisplayed = 15;
}];

[sectionHeadersAct showInView:self.view];

关于iphone - 更新 block 中的 NSUInteger 属性。警告 : Block will be retained by,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9387414/

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