方法簽名與調(diào)用 NSMethodSignature - NSInvocation

使用 NSTimer 時(shí),發(fā)現(xiàn)有這么2個(gè)東西,也不是很理解,簡(jiǎn)單使用如下,跟直接調(diào)用方法效果類似。更多深入求教育,謝謝。

  • 1 有個(gè)類,存在方法,別的類調(diào)用。自己調(diào)用自己的也一樣。
@interface TestClass : NSObject
- (NSString *)appendStringWithstring1:(NSString *)str1 string2:(NSString *)str2;// 具體實(shí)現(xiàn) 就是 拼接字符串。
@end
  • 2 其他類調(diào)用

    // 要調(diào)用 方法的 類
    TestClass *testClass = [[TestClass alloc] init];
    // 方法的 2 個(gè)參數(shù)
    NSString *str1 = @"111";
    NSString *str2 = @"222";
    
    // 需要實(shí)現(xiàn)的方法
    SEL testSeletor = @selector(appendStringWithstring1:string2:);
    
    // 簽名?
    NSMethodSignature *sig = [[TestClass class] instanceMethodSignatureForSelector:testSeletor];
   
    // 調(diào)用 設(shè)置:目標(biāo)信號(hào),執(zhí)行對(duì)象 與 方法
    NSInvocation *testInvocation = [NSInvocation invocationWithMethodSignature:sig];
    [testInvocation setTarget:testClass];
    [testInvocation setSelector:testSeletor];
    
    // 傳入?yún)?shù),index 01 就是我們常寫(xiě)的 self 和 @select,默認(rèn)了。所以我傳參數(shù) 從2 開(kāi)始
    [testInvocation setArgument:&str1 atIndex:2];
    [testInvocation setArgument:&str2 atIndex:3];
    
    // 回調(diào) 結(jié)果
    NSString *testResult = nil;
    [testInvocation retainArguments];
    [testInvocation invoke];
    [testInvocation getReturnValue: &testResult];
    
    // 打印 處理結(jié)果:即拼接字符串
    NSLog(@"%@",testResult);

實(shí)際上我們都直接調(diào)用

水平不夠,只能寫(xiě)這么多了。

    NSString *result = [testClass appendStringWithstring1:str1 string2:str2];
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,068評(píng)論 25 709
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類相關(guān)的語(yǔ)法,內(nèi)部類的語(yǔ)法,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚(yú)_t_閱讀 34,728評(píng)論 18 399
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,569評(píng)論 19 139
  • 每天晚上睡覺(jué)之前,我都會(huì)拿著kindle看一小會(huì)書(shū)。像民國(guó)的老毒棍抽大煙一樣,斜躺著身體靠在床上吸食精神鴉片...
    melongod1閱讀 11,712評(píng)論 7 32
  • 一 .unrecognized selector sent to instance 網(wǎng)絡(luò)請(qǐng)求,獲取到的JSON數(shù)據(jù)...
    AnderQZ閱讀 484評(píng)論 0 0

友情鏈接更多精彩內(nèi)容