美文网首页程序员
封装的工具类,实现方法里有异步处理,该怎么封装?

封装的工具类,实现方法里有异步处理,该怎么封装?

作者: _飞翔的大虾丶 | 来源:发表于2018-04-11 17:21 被阅读31次

需求:APP中有是否允许wifi下加载的开关,如果开关开启状态,点击视频播放时无论网络状态,不用弹窗可以直接播放;如果非wifi网络,需弹窗提示是否允许本次加载。

分析:如果在每个视频点击的事件下都进行判断,然后根据状态处理事件,需要些一堆重复的代码。所有必须要封装成一个工具类(AllowPalyTool);

开始是准备这么做的:
.h文件

/**
 根据返回值判断是否允许进行下一步操作
 
 @param VC 需要判断的当前Controller
 */
+ (void)AllowPalyWith:(UIViewController *)VC;

.m文件

+ (BOOL )AllowPalyWith:(UIViewController *)VC{
    if ([DetectNetWork CurrentNetWorkType] == 2) {//当前是wifi状态
        return YES;
    }else if (![KGET_VALUT(K_AllOW_Wifi) boolValue]){//允许非wifi加载
        return YES;
    }else {
        [UIAlertTool showAlertViewAtController:VC title:@"温馨提示" message:@"当前网络为非Wifi状态,是否允许本次播放?" cancelButtonTitle:@"取消" and:UIAlertActionStyleDefault certainButtonTitle:@"允许" and:UIAlertActionStyleDefault cancelClick:^{
                ?
        } certainClick:^{
                ?
        }];
    }
    ?
}

问题:代码中?的地方不能处理!

需求实现:
.h文件

/**
 根据allowTypeBlock判断是否允许进行下一步操作

 @param VC 需要判断的当前Controller
 @param allowTypeBlock 返回BOOL类型
 */
+ (void)AllowPalyWith:(UIViewController *)VC withBlock:(void(^)(BOOL isAllow))allowTypeBlock;

.m文件

+ (void)AllowPalyWith:(UIViewController *)VC withBlock:(void(^)(BOOL isAllow))allowTypeBlock{
    
    if ([DetectNetWork CurrentNetWorkType] == 2) {//当前是wifi状态
        allowTypeBlock(YES);
    }else if (![KGET_VALUT(K_AllOW_Wifi) boolValue]){//允许非wifi加载
        allowTypeBlock(YES);
    }else {
        [UIAlertTool showAlertViewAtController:VC title:@"温馨提示" message:@"当前网络为非Wifi状态,是否允许本次播放?" cancelButtonTitle:@"取消" and:UIAlertActionStyleDefault certainButtonTitle:@"允许" and:UIAlertActionStyleDefault cancelClick:^{
            allowTypeBlock(NO);
        } certainClick:^{
            allowTypeBlock(YES);
        }];
    }
}

注释:DetectNetWork:获取网络状态的工具类; UIAlertTool:封装系统弹出的工具类;

相关文章

网友评论

    本文标题:封装的工具类,实现方法里有异步处理,该怎么封装?

    本文链接:https://www.haomeiwen.com/subject/fujzhftx.html