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

前端之家收集整理的这篇文章主要介绍了反应可可 – 在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相关文章