加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

反应可可 – 在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:我正在学英文。我希望你能明白我在说什么。)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读