블록 에이전트

4777 단어
프록시 3걸음(협의 전달 매개 변수 정의)************취지 전달 3걸음(협의 전달 매개 변수 정의)*******************1*) 협의를 정의한다.방법2) 하나의 속성을 성명하고 에이전트 대상을 기록하는 3) 적당한 시기에 에이전트 측에 메시지를 보낸다
.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
    }];

좋은 웹페이지 즐겨찾기