第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

iOS-如何使用多個(gè)參數(shù)和afterDelay實(shí)現(xiàn)performSelector?

iOS-如何使用多個(gè)參數(shù)和afterDelay實(shí)現(xiàn)performSelector?

開滿天機(jī) 2019-12-20 10:04:58
我是iOS新手。我有一個(gè)選擇器方法如下-- (void) fooFirstInput:(NSString*) first secondInput:(NSString*) second{}我正在嘗試實(shí)現(xiàn)這樣的東西-[self performSelector:@selector(fooFirstInput:secondInput:) withObject:@"first" withObject:@"second" afterDelay:15.0];但這給了我一個(gè)錯(cuò)誤的說法-Instance method -performSelector:withObject:withObject:afterDelay: not found關(guān)于我所缺少的任何想法嗎?
查看完整描述

3 回答

?
紅糖糍粑

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超6個(gè)贊

我個(gè)人認(rèn)為,更符合您需求的解決方案是使用NSInvocation。


類似于以下內(nèi)容的工作:


indexPath和 dataSource是在同一方法中定義的兩個(gè)實(shí)例變量。


SEL aSelector = NSSelectorFromString(@"dropDownSelectedRow:withDataSource:");


if([dropDownDelegate respondsToSelector:aSelector]) {

    NSInvocation *inv = [NSInvocation invocationWithMethodSignature:[dropDownDelegate methodSignatureForSelector:aSelector]];

    [inv setSelector:aSelector];

    [inv setTarget:dropDownDelegate];


    [inv setArgument:&(indexPath) atIndex:2]; //arguments 0 and 1 are self and _cmd respectively, automatically set by NSInvocation

    [inv setArgument:&(dataSource) atIndex:3]; //arguments 0 and 1 are self and _cmd respectively, automatically set by NSInvocation


    [inv invoke];

}


查看完整回答
反對(duì) 回復(fù) 2019-12-20
?
慕尼黑8549860

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超11個(gè)贊

因?yàn)闆]有這種[NSObject performSelector:withObject:withObject:afterDelay:]方法。


您需要將要發(fā)送的數(shù)據(jù)封裝到某個(gè)單一的Objective C對(duì)象(例如,NSArray,NSDictionary,某些自定義Objective C類型)中,然后通過[NSObject performSelector:withObject:afterDelay:]眾所周知的方法將其傳遞。


例如:


NSArray * arrayOfThingsIWantToPassAlong = 

    [NSArray arrayWithObjects: @"first", @"second", nil];


[self performSelector:@selector(fooFirstInput:) 

           withObject:arrayOfThingsIWantToPassAlong  

           afterDelay:15.0];


查看完整回答
反對(duì) 回復(fù) 2019-12-20
?
炎炎設(shè)計(jì)

TA貢獻(xiàn)1808條經(jīng)驗(yàn) 獲得超4個(gè)贊

您可以將參數(shù)打包到一個(gè)對(duì)象中,并使用一個(gè)助手方法來調(diào)用您原來的方法,就像邁克爾和其他人建議的那樣。


另一個(gè)選項(xiàng)是dispatch_after,它將采用一個(gè)塊并在特定時(shí)間將其排入隊(duì)列。


double delayInSeconds = 15.0;

dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);


dispatch_after(popTime, dispatch_get_main_queue(), ^(void){


    [self fooFirstInput:first secondInput:second];


});

或者,正如您已經(jīng)發(fā)現(xiàn)的那樣,如果您不需要延誤,則可以使用 - performSelector:withObject:withObject:


查看完整回答
反對(duì) 回復(fù) 2019-12-20
  • 3 回答
  • 0 關(guān)注
  • 938 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)