체인 프로그래밍 - 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에 따라 라이센스가 부여됩니다.