【问题标题】:Block type conflit块类型冲突
【发布时间】:2016-01-14 09:15:00
【问题描述】:
- while I was using a block, it aways prompt block type confit,

原因如下:

 Redefinition of 'responseObject' with a different type: 'sucessBlock
 (__strong' (aka 'void (^__strong)(__strong id)') vs 'id _Nullable
   __strong' // here is the block declare: #import <Foundation/Foundation.h> typedef void(^sucessBlock)(id
   respondseObject); typedef void(^failureBlock)(NSError * error);


 #import <Foundation/Foundation.h>
    typedef void(^sucessBlock)(id respondseObject);
    typedef void(^failureBlock)(NSError * error);
    @interface TRAFNetWorkManager : NSObject
    +(void)sendGetRequestWithUrl:(NSString*)urlStr paramenters:(NSDictionary*)paramDic sucess:(sucessBlock)suscess failure:(failureBlock)failure;
    @end

// 这里是补#import

  #import "TRAFNetWorkManager.h"
    #import "AFNetworking.h"
    @implementation TRAFNetWorkManager

    +(void)sendGetRequestWithUrl:(NSString *)urlStr paramenters:(NSDictionary *)paramDic sucess:(sucessBlock)suscess failure:(failureBlock)failure {
        AFHTTPSessionManager* manager=[AFHTTPSessionManager manager];
        [manager GET:urlStr parameters:paramDic progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {

            sucessBlock(responseObject);
        } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {

            NSError*error1=nil;
            failureBlock(error1);
        }];
    }

@end

【问题讨论】:

  • 您的代码有几个拼写错误 - 例如,success 的变量名拼写为 suscesssucesssucessBlock 也应该是 successBlock

标签: ios block objective-c-blocks


【解决方案1】:

successBlockfailureBlock 是块类型 的名称。您不能将它们用于调用。相反,您需要使用块 变量 的名称,在您的情况下是 successfailure

+(void)sendGetRequestWithUrl:(NSString *)urlStr
                 paramenters:(NSDictionary *)paramDic
                     success:(successBlock)success
                     failure:(failureBlock)failure {
    AFHTTPSessionManager* manager=[AFHTTPSessionManager manager];
    [manager GET:urlStr parameters:paramDic progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        success(responseObject);
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        NSError*error1=nil;
        failure(error1);
    }];
}

【讨论】:

  • 发现错误,块类型错误,一定是参数,谢谢!
猜你喜欢
  • 1970-01-01
  • 2013-08-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-10
  • 1970-01-01
  • 1970-01-01
  • 2017-03-18
相关资源
最近更新 更多