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

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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

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

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

3 回答

?
紅糖糍粑

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

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


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


indexPath和 dataSource是在同一方法中定義的兩個實(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];

}


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

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

因為沒有這種[NSObject performSelector:withObject:withObject:afterDelay:]方法。


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


例如:


NSArray * arrayOfThingsIWantToPassAlong = 

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


[self performSelector:@selector(fooFirstInput:) 

           withObject:arrayOfThingsIWantToPassAlong  

           afterDelay:15.0];


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

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

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


另一個選項是dispatch_after,它將采用一個塊并在特定時間將其排入隊列。


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:


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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