블록 에이전트
.h
1,@protocol PaperClickDelegate
-(void)BtnClick:(PaperCellModel*)viewModel;
@end
2,@property(nonatomic,assign)id delegate;
.m
3,[self.delegate BtnClick:self.paperCellModel];
△△△△△△△취지받기3단계(합의실현방법 준수)△△△△△△△△△△△△△△△△△△△△△△△△△△준수2) 실현방법 3) 설정대행
.h
1, @interface PaperTestTableViewController()
.m
2, cell.delegate=self;
3,-(void)BtnClick:(PaperCellModel*)viewModel{
[viewModel.paperModel.userMeta.currentPracticeId integerValue]
}
블락 블락 심층 분석(상편) - 블락 본질 블락 심층 분석(중편) - 메모리 관리와 변수 전달 블락 심층 분석(하편) - 개발 중 사용 장면 Objective-C 중의 블락
△△△△△△△패스 리턴(역패스)△△△△△△△△△△△△△△△△
장면: 컨트롤러의 역전 실현 방식이 매우 많은데 여기서modal 방식의 Block 역전을 설명한다.A 컨트롤러 모듈은 B 컨트롤러를 내보내고 B 컨트롤러 dismiss는 A 컨트롤러에 전송합니다
1: 파라미터가 있는 블록 속성 설명 2: 값 컨트롤러에 블록 정의 3: 값 컨트롤러에서 블록 호출
*** B: ( block, )***
// ModalVC.h (1)
// modal B block
@property (nonatomic ,strong) void(^valueBlcok)(int value);
//@property(nonatomic,copy)void(^cellClickBlock)(NSString*msg);
// ModalVC.m (3)
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
//
if (_valueBlock) {
_valueBlock(@"123");
}
[self dismissViewControllerAnimated:YES completion:nil];
}
// block
//self.cellClickBlock(model.paperModel.ID);
-----------------------
*** A: (2) ( )***
2,
//
/*
.m
VC.cellClickBlock= ^(NSString*msg) {
DLog(@" ID==%@",msg);
};
*/
// viewContent.m ( view )
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
ModalViewController *modalVc = [[ModalViewController alloc] init];
modalVc.valueBlock = ^(NSString *value){
//
NSLog(@"%@",value);
};
[self presentViewController:modalVc animated:YES completion:nil];
}
△△△△△△△△△△△△ 블럭 리턴 요청 △ △ △ △ △ △ △ △ △ △ △
NetworkRequest.h
/**
* 。
* @param responseObject 。
*/
typedef void(^Succsess)(id responseObject);
/**
* 。
* @param error 。
*/
typedef void(^Failure)(NSString *errorMessage);
+(void)requestWithParameter:(NSDictionary *)dic withSuccess:(Succsess)succsess andFailure:(Failure)failure;
NetworkRequset.m
+(void)requestWithParameter:(NSDictionary *)dic withSuccess:(Succsess)succsess andFailure:(Failure)failure{
if(succsess){
succsess(@{@"result":[NSNumber numberWithBool:YES],@"modelarray":mArray,@"myRankModel":myRank});
}
if(failure){
DLog(@"error");
failure([request.ErrorDic objectForKey:@"message"]);
}
}
----------
HTIAPHelper.h
typedef void(^buyCompletionBlock)(NSString *identifier);
typedef void(^restoreCompletionBlock)(NSArray *products);
typedef void(^failedBlock)(NSString *reason);
//
@property (nonatomic, copy) buyCompletionBlock buyCompletion;
@property (nonatomic, copy) restoreCompletionBlock restoreCompletion;
@property (nonatomic, copy) failedBlock failedBlock;
HTIAPHelper.m
- (void)buyProduct:(NSString *)identifier
completion:(buyCompletionBlock)completion
failed:(failedBlock)failed
{
//
self.buyCompletion = completion;
self.failedBlock = failed;
}
//
#warning -Break Cycle ?
// : block self, 。 YTKRequest block , block nil。 。
// __weak typeof(self) wself = self;
[requset startWithCompletionBlockWithSuccess:^(__kindof YTKBaseRequest *request) {
NSInteger code = [[request.responseJSONObject objectForKey:@"code"] integerValue];
if (code== 1000000) {
// __strong typeof(wself) sself = wself;
self.buyCompletion(@"1000000");
// [sself->_buyCompletion addObject:@"1000000"];
}else
{
// __strong typeof(wself) sself = wself;
self.buyCompletion(@"-1");
// [sself->_buyCompletion addObject:@"-1"];
}
} failure:^(__kindof YTKBaseRequest *request) {
if (_failedBlock) {
_failedBlock([request.userInfo objectForKey:@"message"]);
}
}];
A:
[[HTIAPHelper sharedIAPHelper] buyProduct:_Salemodel.inPurchaseProductId completion:^(NSString *identifier) {
//identifier = self.buyCompletion(@"");
if ([identifier isEqualToString:@"1000000"]) {
//do SomeThings
}
} failed:^(NSString *reason) {
//reason== _failedBlock()
//do SomeThings
}];
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.