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可以定义类型别名