ReactiveCocoa之RAC常用宏(十)

来源:互联网 发布:c语言中char是几位 编辑:程序博客网 时间:2024/05/23 17:22
  1. /** 
  2.  *  RAC有许多强大而方便的宏。 
  3.  */  
  4.   
  5. - (void)viewDidLoad {  
  6.     [super viewDidLoad];  
  7.     // Do any additional setup after loading the view, typically from a nib.  
  8.     [self testAndtest2];  
  9.       
  10. }  
  11.   
  12. /** 
  13.  *RAC宏 
  14.  */  
  15. - (void)test  
  16. {  
  17.     // RAC:把一个对象的某个属性绑定一个信号,只要发出信号,就会把信号的内容给对象的属性赋值  
  18.     // 给label的text属性绑定了文本框改变的信号  
  19.     RAC(self.label, text) = self.textField.rac_textSignal;  
  20. //    [self.textField.rac_textSignal subscribeNext:^(id x) {  
  21. //        self.label.text = x;  
  22. //    }];  
  23.   
  24. }  
  25.   
  26. /** 
  27.  *  KVO 
  28.  *  RACObserveL:快速的监听某个对象的某个属性改变 
  29.  *  返回的是一个信号,对象的某个属性改变的信号 
  30.  */  
  31. - (void)test2 {  
  32.     [RACObserve(self.view, center) subscribeNext:^(id x) {  
  33.         NSLog(@"%@", x);  
  34.     }];  
  35. }  
  36. - (void)testAndtest2 // textField输入的值赋值给label,监听label文字改变,  
  37. {  
  38.       
  39.     RAC(self.label, text) = self.textField.rac_textSignal;  
  40.     [RACObserve(self.label, text) subscribeNext:^(id x) {  
  41.         NSLog(@"====label的文字变了");  
  42.     }];  
  43.       
  44. }  
  45.   
  46. /** 
  47.  *  循环引用问题 
  48.  */  
  49. - (void)test3 {  
  50.     @weakify(self)  
  51.     RACSignal *signal = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {  
  52.         @strongify(self)  
  53.         NSLog(@"%@",self.view);  
  54.         return nil;  
  55.     }];  
  56.     _signal = signal;  
  57. }  
  58.   
  59. /** 
  60.  * 元祖 
  61.  * 快速包装一个元组 
  62.  * 把包装的类型放在宏的参数里面,就会自动包装 
  63.  */  
  64. - (void)test4 {  
  65.     RACTuple *tuple = RACTuplePack(@1,@2,@4);  
  66.     // 宏的参数类型要和元祖中元素类型一致, 右边为要解析的元祖。  
  67.     RACTupleUnpack_(NSNumber *num1NSNumber *num2NSNumber * num3) = tuple;// 4.元祖  
  68.     // 快速包装一个元组  
  69.     // 把包装的类型放在宏的参数里面,就会自动包装  
  70.     NSLog(@"%@ %@ %@", num1, num2, num3);  
  71.       
  72. }  
1 0
原创粉丝点击