iOS 当封装网络请求的时候你可能会遇到一个问题,在你的公共方法中需要传入block的时候应该怎么写,然后我就参考了一下AFNetworking,AFN的是直接把block写在参数里
- (nullable NSURLSessionDataTask *)POST:(NSString *)URLString
parameters:(nullable id)parameters
progress:(nullable void (^)(NSProgress *uploadProgress))uploadProgress
success:(nullable void (^)(NSURLSessionDataTask *task, id _Nullable responseObject))success
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError *error))failure;
但是这样太冗余了,有没有简化的方法呢 ###typedef 关键字就能解决这个问题
typedef void(^uploadProgress)(NSProgress *uploadProgress);
typedef void(^success)(NSURLSessionTask *task, id responseObject);
typedef void(^failure)(NSURLSessionTask *task, NSError *error);
@property (nonatomic, copy) void(^managerBlock)(NSString *string);
- (NSURLSessionDataTask *)POST:(NSString *)URLString parameters:(id)dict progress:(uploadProgress)uploadProgress success:(success)success failure:(failure)failure;
但是typedef这个关键字是什么意思呢?
举个简单例子
typedef NSString *myStr;
myStr name = @"nameTest";
NSLog(@"%@", name);
此时myStr就相当于NSString *,那我们就可以说typedef可以定义类型别名