zoukankan      html  css  js  c++  java
  • iOS开发ReactiveCocoa学习笔记(二)

    RAC 中常见的宏:

    使用宏定义要单独导入 #import <RACEXTScope.h>

     一.

        RAC(TARGET, [KEYPATH, [NIL_VALUE]]):用于给某个对象的某个属性绑定
         只要文本框文字改变,就会修改label的文字
        RAC(self.labelView,text) = _textField.rac_textSignal;

    二.

        RACObserve(self, name):监听某个对象的某个属性,返回的是信号。
        [RACObserve(self.view, center) subscribeNext:^(id x) {
            NSLog(@"%@",x);
        }];
    
        当RACObserve放在block里面使用时一定要加上weakify,不管里面有没有使用到self;否则会内存泄漏,因为RACObserve宏里面就有一个self
        @weakify(self);
        RACSignal *signal3 = [anotherSignal flattenMap:^(NSArrayController *arrayController) {
         Avoids a retain cycle because of RACObserve implicitly referencing self
            @strongify(self);
            return RACObserve(arrayController, items);
        }];

    三.

        @weakify(Obj)和@strongify(Obj),一般两个都是配套使用,在主头文件(ReactiveCocoa.h)中并没有导入,需要自己手动导入,RACEXTScope.h才可以使用。但是每次导入都非常麻烦,只需要在主头文件自己导入就好了

    四.

        RACTuplePack:把数据包装成RACTuple(元组类)
         把参数中的数据包装成元组
        RACTuple *tuple = RACTuplePack(@10,@20);

    五.

        RACTupleUnpack:把RACTuple(元组类)解包成对应的数据
        // 把参数中的数据包装成元组
        RACTuple *tuple = RACTuplePack(@"xmg",@20);
        
        // 解包元组,会把元组的值,按顺序给参数里面的变量赋值
        // name = @"xmg" age = @20
        RACTupleUnpack(NSString *name,NSNumber *age) = tuple;
  • 相关阅读:
    55.every,filter,forEach,map,some,reduce,slice
    54.get set
    53.一个挺有意思的api(drag)
    52.var,let,const
    iOS18 程序启动过程
    iOS17 加密
    iOS总结2
    iOS16 常用的正则表达式
    iOS15 UIalertController
    iOS14 UIWebView
  • 原文地址:https://www.cnblogs.com/ningmengcao-ios/p/6803904.html
Copyright © 2011-2022 走看看