反应可可 – 在ReactiveCocoa/libextobjc中如何弱化和强化工作的
发布时间:2020-12-15 06:31:55 所属栏目:百科 来源:网络整理
导读:我明白你应该使用@weakify @strongify来避免保留周期,但是我不完全明白他们如何实现这一点? 预处理前的代码: @weakify(self)[[self.searchText.rac_textSignal map:^id(NSString *text) { return [UIColor yellowColor]; }] subscribeNext:^(UIColor *col
我明白你应该使用@weakify @strongify来避免保留周期,但是我不完全明白他们如何实现这一点?
预处理前的代码:
@weakify(self) [[self.searchText.rac_textSignal map:^id(NSString *text) { return [UIColor yellowColor]; }] subscribeNext:^(UIColor *color) { @strongify(self) self.searchText.backgroundColor = color; }]; 预处理后的代码: @autoreleasepool {} __attribute__((objc_ownership(weak))) __typeof__(self) self_weak_ = (self); [[self.searchText.rac_textSignal map:^id(NSString *text) { return [UIColor yellowColor]; }] subscribeNext:^(UIColor *color) { @try {} @finally {} __attribute__((objc_ownership(strong))) __typeof__(self) self = self_weak_; // 1 self.searchText.backgroundColor = color; //2 }]; 1:定义一个新的局部变量“self”。这将影响全球。 2:所以在这里我们使用局部变量“self” – self_weak_。 提示: 如果我们在块中使用了self.xxx,我们应该放置@strongify(self)。 不要忘记使用@weakify(self)来定义变量self_weak_。 (PS:我正在学英文。我希望你能明白我在说什么。) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |