iOS開發(fā)優(yōu)雅的使用runtime進行多個方法調用

有的時候同一個頁面有好幾按鈕,每一個按鈕對應一個方法調用,一般代碼我們都會用switch來進行區(qū)分,代碼如下:

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來實現(xiàn)這一需求:

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];
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容