美文网首页
iOS开发优雅的使用runtime进行多个方法调用

iOS开发优雅的使用runtime进行多个方法调用

作者: 心成则玲 | 来源:发表于2023-03-08 13:44 被阅读0次

有的时候同一个页面有好几按钮,每一个按钮对应一个方法调用,一般代码我们都会用switch来进行区分,代码如下:

switch([x intValue])
{
    case 0:
    {
        [self loadFastRegisterView];
        break;
    }
    case 1:
    {
        [self loadRealNameView];
        break;
    }
    case 2:
    {
        [self loadBindPhoneView];
        break;
    }
    case 3:
    {
        [self loadChangePasswordView];
        break;
    }
    case 4:
    {
        [self loadServicerCenterView];
        break;
    }

    default:
    {
        break;
    }
}

是不是感觉很low?我们可以使用runtime来实现这一需求:

SEL selectors[] =
 {
     @selector(loadFastRegisterView),
     @selector(loadRealNameView),
     @selector(loadBindPhoneView),
     @selector(loadChangePasswordView),
     @selector(loadServicerCenterView)
 };
        
 if ([x intValue] < sizeof(selectors) / sizeof(SEL))
 {
     void(*imp)(id, SEL) = (typeof(imp))[self methodForSelector:selectors[[x intValue]]];
     imp(self, selectors[[x intValue]]);
 }

瞬间逼格高了很多。
还有tableView的cell点击跳转不同的控制器

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    Class class = NSClassFromString(self.sourceArr[indexPath.row][@"control"]);
    [self.navigationController pushViewController:[class new] animated:YES];
}

相关文章

网友评论

      本文标题:iOS开发优雅的使用runtime进行多个方法调用

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