gpt4 book ai didi

ios - enumerateObjectsUsingBlock 中的 weakSelf?

转载 作者:塔克拉玛干 更新时间:2023-11-01 19:08:09 27 4
gpt4 key购买 nike

在以下代码片段 (self.searchResults) 中调用 self 时,我是否应该使用 weakSelf:

[self.restaurants enumerateObjectsUsingBlock:^(Restaurant *restaurant, NSUInteger idx, BOOL *stop) {
if ([scope isEqualToString:@"All"] || [restaurant.name isEqualToString:scope]) {

NSRange range = [restaurant.name rangeOfString:searchText
options:(NSCaseInsensitiveSearch | NSDiacriticInsensitiveSearch)];
if (range.length > 0) {
[self.searchResults addObject:restaurant];
}
}

}];

在 block 中调用 self.searchResults 时,我应该引用 weak 吗?

最佳答案

weak 这里不需要。对复制到 block 中的变量使用 weak 的目的是避免循环引用,您在这里没有这种风险 - 部分原因是 block 没有保留。

考虑以下示例。在 self 拥有的 block 中捕获 self 会导致无法打破的保留循环:

@interface MyObject : NSObject

@property (copy, nonatomic) void (^contrived)();

@end

@implementation MyObject

- (id) init
{
self = [super init];
if ( self )
{
self.contrived = ^{

NSLog( @"%@", self.description );

};
}
return self;
}

@end

关于ios - enumerateObjectsUsingBlock 中的 weakSelf?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23527424/

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