如不雅没写 default case,Xcode 会给出如下警告:

这几乎可以看做是 iOS 下处理逻辑分支的 best practice 了。
Match
除此之外,我们还有另一种更“激进”的方法来避免这类问题,match pattern。以前一年看到越来越多的代码采取这种方法。应用 match pattern 代码如下:
- // File A
- typedef enum : NSUInteger {
- EUserLoginStatusLoggedIn,
- EUserLoginStatusLoggedOut,
- } EUserLoginStatus;
- // File B
- typedef void (^UserLoggedInBlock)(void);
- typedef void (^UserLoggedoutBlock)(void);
- - (void)someMatchUserStatusLogic
- {
- [self matchUserStatusLoggedIn:^{
- //...
- } loggedOut:^{
- //...
- }];
- }
- - (void)matchUserStatusLoggedIn:(UserLoggedInBlock)loggedInBlock loggedOut:(UserLoggedoutBlock)loggedoutBlock
- {
- EUserLoginStatus userStatus = EUserLoginStatusLoggedIn;
- switch (userStatus) {
- case EUserLoginStatusLoggedIn:
- {
- loggedInBlock();
- }
- break;
- case EUserLoginStatusLoggedOut:
- {
- loggedoutBlock();
- }
- break;
- }
- }
- // File B
- typedef void (^UserLoggedInBlock)(void);
- typedef void (^UserLoggedoutBlock)(void);
- typedef void (^UserKickedoutBlock)(void);
- - (void)matchUserStatusLoggedIn:(UserLoggedInBlock)loggedInBlock loggedOut:(UserLoggedoutBlock)loggedoutBlock kickedOut:(UserKickedoutBlock)kickedoutBlock;
那么所有被影响的代码只要一编译都邑报错,改起来相当便利,比拟较于 warning,compile error 显然更能借助编译器来避免我们代码上的分支漏掉。即使代码被第二小我接办,修改起来也一目了然。
这种写法如不雅不明白目标地点,第一眼看上去显得粗笨且多余。我小我感到,有时刻如不雅多写的代码模式固定且简单轻易懂得,同时这种多出来的代码可以让逻辑更结实,那么这些多余的代码就并不多余。尤其是当项目代码量过于宏大年夜且介入人数浩瀚的情况下,优质的代码书写避免代码产生料想之外的降级。
【编辑推荐】
- iOS如安在VPN中进行定位
- 10月中国iOS应用下载榜单:抖音以50%增速排位第十,王者光荣仍稳居第一
推荐阅读
Tech Neo技巧沙龙 | 11月25号,九州云/ZStack与您一路商量云时代收集界线治理实践周全集合扫描请求我们拜访所有1,000,000个文档。仅索引surname就削减到20,028个文件 - 实际上是收集中的所有“SMI>>>详细阅读
本文标题:iOS代码里逻辑分支的处理
地址:http://www.17bianji.com/lsqh/39022.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示