objc msgSend呼叫引數是block的函式

2021-09-11 13:47:39 字數 975 閱讀 9347

有乙個函式的引數是block #####例:

- (void)delete:(nsstring *)value result:(callbackblcok)callback;

正常的呼叫就是如下:

[[***x sharedinstance] delete:@"value" result:^(int number) ];

複製**

#####突然想到如果都用runtime的objc_msgsend來呼叫會什麼樣子,經過一番折騰, 寫出了如下的**

class *** = objc_getclass("******x");

id instacne =  objc_msgsend(***,@selector(sharedinstance));

objc_msgsend(instacne, @selector(codesign:result:),@"value",^(int number));

複製**

#####然後就一直崩潰, 一直崩潰

#####然後突然想到了是不是因為objc_msgsend的問題 ,找到了之前寫的乙個文章 ios檢測系統彈窗並自動關閉裡面提到的objc_msgsend的問題

((返回值型別(*)(id, sel,引數))objc_msgsend)(self, @selector(dosomething:), 0);那我這個函式就是

typedef void(^callbackblcok) (int number);

((void(*)(id, sel,nsstring*, callbackblcok))objc_msgsend)(self, @selector(dosomething:), @"value",^(int number));

複製**

#####大功告成

SpringCloud RPC 引數呼叫

spring cloud rpc 呼叫 a服務如下 呼叫publicservice 公共服務 引數必須是multivaluemap 形式,傳入多個引數add方式新增 相當於postman 新增多個key value方式 被呼叫服務 通過 requestparam map 的方式接收 1.這樣,對於查...

unity引數過載呼叫

介紹了使用unitycontainer來註冊物件之間的關係 註冊已存在的物件之間的關係,同時著重介紹了unity內建的各種生命週期管理器的使用方法,今天則主要介紹unity的register和resolve的一些高階應用。1 註冊型別同時初始化構造函式引數並過載呼叫。2 註冊型別同時初始化屬性引數並...

9 呼叫http api的姿勢 帶引數呼叫

func callapi s selector.selector 使用生成的pb檔案中的結構體作為引數封裝到請求體中 var resp models.prodlistresponse 這裡使用生成的response物件,客戶端只需要傳入這個就可以了,無需關心服務端返回什麼格式,因為服務端已經用rpc...