체인 프로그래밍 - 01 - 블록
make.left.equalTo(superView.mas_left);
  위의 이 코드를 어떻게 이해합니까
make.equalTo(superView.mas_left);
  Block 확장  
프로그래머가 코드를 쓸 때 습관적으로 쓰는 방법은 다음과 같다.//       
- (NSString *)test1 {
    return @"123";
}
//          
[self test1];
//           
self.test1;
  
그러나 이런 문법은 방법 뒤에 나타나 괄호를 따라갈 수 없다. 예를 들어self.test1();
  
그러나 반환 값이 Block 형식일 때 위의 맞춤법을 사용할 수 있습니다.- (void(^)(void))test2 {
    
    NSLog(@"    test2");
    
    void(^block)(void) = ^ {
        NSLog(@"    test2     block");
    };
    
    return block;
}
  
호출test2       //     self.test2     ,    block     
    self.test2;
    
    NSLog(@" -----       ----- ");
    
    //         ,     block   
    self.test2();
//      :
2018-08-07 16:15           test2
2018-08-07 16:15       -----       ----- 
2018-08-07 16:15           test2
2018-08-07 16:15           test2     block
  self.test2() 이렇게 호출, test2  의 호출 순서는 마지막으로 Block 블록의 코드를 호출합니다- (void(^)(void))test3 {
    
    NSLog(@"1");
    
    void(^block)(void) = ^ {
        NSLog(@"3 -     block");
    };
    
    NSLog(@"2");
    return block;
}
  
인쇄 결과2018-08-07 16:24      1
2018-08-07 16:24      2
2018-08-07 16:24      3 -     block
  
연습하다  
덧셈 계산기 만들기
대상을 향한 쓰기
  
//       
- (NSString *)test1 {
    return @"123";
}
//          
[self test1];
//           
self.test1;
self.test1();
- (void(^)(void))test2 {
    
    NSLog(@"    test2");
    
    void(^block)(void) = ^ {
        NSLog(@"    test2     block");
    };
    
    return block;
}
    //     self.test2     ,    block     
    self.test2;
    
    NSLog(@" -----       ----- ");
    
    //         ,     block   
    self.test2();
//      :
2018-08-07 16:15           test2
2018-08-07 16:15       -----       ----- 
2018-08-07 16:15           test2
2018-08-07 16:15           test2     block
- (void(^)(void))test3 {
    
    NSLog(@"1");
    
    void(^block)(void) = ^ {
        NSLog(@"3 -     block");
    };
    
    NSLog(@"2");
    return block;
}
2018-08-07 16:24      1
2018-08-07 16:24      2
2018-08-07 16:24      3 -     block
덧셈 계산기 만들기
대상을 향한 쓰기
@interface WYCalculatorManager : NSObject
///      
@property (nonatomic, assign) NSInteger result;
/**
       
 @param value      
 */
- (void)add:(NSInteger)value;
@end
@implementation WYCalculatorManager
- (WYCalculatorManager *)add:(NSInteger)value
{
    _result += value;
    
    return  self ;
}
@end
  #import "WYCalculatorManager.h"
@implementation ViewController
- (void)viewDidLoad {
    [super viewDidLoad];
    
    WYCalculatorManager *cal = [[WYCalculatorManager alloc] init];
    [cal add:3];
    
}
   [cal add:3];
 [cal add:3];
 [cal add:3];
 [cal add:3];
 [cal add:3];
  WYCalculatorManager *cal = [[WYCalculatorManager alloc] init];
 [[[[[cal add:3] add:3] add:3] add:3] add:3];
  체인 지향
(   *)#import 
@interface WYCalculatorManager : NSObject
///      
@property (nonatomic, assign) NSInteger result;
/**
        ->     
 @param value      
 */
// - (void)add:(NSInteger)value;
/**
         ->       
 
 @param value      
 */
- (WYCalculatorManager * )add:(NSInteger)value;
@end
       WYCalculatorManager *cal = [[WYCalculatorManager alloc] init];
    [[[[[cal add:3] add:3] add:3] add:3] add:3];
  car.add(3).add(3).add(3).add(3).add(3)//           add: (NSInterger)value
//          ,    ,     
- (void(^)(void))add;
//    :
WYCalculatorManager *cal = [[WYCalculatorManager alloc] init];
//        add,   block         
//       ,   block     ,    ,               NSInterger
  cal.add();
  //          ,    ,    
- (void(^)(NSInteger))add;
//    :
 cal.add(3);
  6.1 .m의 맞춤법
- (void (^)(NSInteger))add {
    
    void(^block)(NSInteger) = ^(NSInteger value) {
        _result += value;
    };
    
    return block;
}
  6.2 단순화:
- (void (^)(NSInteger))add {
    
   return ^(NSInteger value) {
        _result += value;
    };
}
  6.3
add(5):^(NSInteger value) {
        _result += value;
 }(5);
  .h   
//    ,    
- (WYCalculatorManager *(^)(NSInteger))add;
.m   :
- (WYCalculatorManager *(^)(NSInteger))add {
    
   return ^(NSInteger value) {
        _result += value;
       
       return self;
    };
}
  :
 WYCalculatorManager *cal = [[WYCalculatorManager alloc] init];
 cal.add(3).add(3).add(3).add(3).add(3);
                이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.