最近,開發(fā)了一個SDK,一行代碼實現(xiàn)所需效果
.h文件主要源碼如下
@class QYSigningVCParam;
@interface QYSigningController : UIViewController
typedef void (^SignSuccessBlock)(); // 簽署成功回調(diào)
typedef void (^SignFailBlock)(NSString* str); // 簽署失敗回調(diào),返回失敗狀態(tài)碼字符串,對應的狀態(tài)碼服務器文檔會給出
typedef void (^NetworkErrorBlock)(NSError *error); // http網(wǎng)絡請求錯誤回調(diào),AFNetworking返回的錯誤
- (instancetype)initWithSigningParam:(QYSigningVCParam *)param
success:(SignSuccessBlock)success
failure:(SignFailBlock)failure
netError:(NetworkErrorBlock)netError;
@end
.m 主要源碼如下:
@interface QYSigningController ()
/** 簽署成功回調(diào) */
@property (nonatomic,copy)SignSuccessBlock signSuccess;
/** 簽署失敗回調(diào) */
@property (nonatomic,copy)SignFailBlock signFailure;
/** 網(wǎng)絡錯誤回調(diào) */
@property (nonatomic,copy)NetworkErrorBlock netError;
@end
- (instancetype)initWithSigningParam:(QYSigningVCParam *)param success:(SignSuccessBlock)success failure:(SignFailBlock)failure netError:(NetworkErrorBlock)netError {
if(self = [super init]) {
self.signingParam = param;
self.signSuccess = success;
self.signFailure = failure;
self.netError = netError;
}
return self;;
}
在調(diào)用時注意作 if 判斷 block 是否為 nil 防止外部傳入空值導致程序崩潰
if (self.signFailure) {
self.signFailure(@"signFailure");
}
if (self.netError) {
self.netError(error);
}