反应可可 – 在ReactiveCocoa/libextobjc中如何弱化和强化工作的说明

我明白你应该使用@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:我正在学英文。我希望你能明白我在说什么。)

相关文章

一、前言 在组件方面react和Vue一样的,核心思想玩的就是组件...
前言: 前段时间学习完react后,刚好就接到公司一个react项目...
前言: 最近收到组长通知我们项目组后面新开的项目准备统一技...
react 中的高阶组件主要是对于 hooks 之前的类组件来说的,如...
我们上一节了解了组件的更新机制,但是只是停留在表层上,例...
我们上一节了解了 react 的虚拟 dom 的格式,如何把虚拟 dom...