簡體   English   中英

如何在obj-C的C函數中向自身發送消息?

[英]How to send a message to self in a C function in obj-C?

我有一個C函數(“音頻隊列服務”中的回調函數),我想向自己發送消息。 怎么做? 如果我輸入[self message],則會出現錯誤:

Use of undeclared identifier 'self'

您不會在實時回調(例如音頻)中執行objc消息。 這樣做的原因是,objc消息傳遞不是固定時間,並且可能會鎖定,從而導致錯過截止日期,從而導致音頻丟失。 靜態或動態( virtual )C ++調用和C函數調用當然是固定時間的,並且適合於實時上下文。

如果不是實時/音頻回調 ,則一種選擇是將self作為用戶信息或上下文參數傳遞:

void SomeCallback(t_stuff* const stuff, void* userInfo) {
  MONClass * Self = (MONClass*)userInfo;
  [Self doSomething];
}

self僅在類定義的上下文中才有意義-它是該類實例的指針。 函數不是任何類的一部分,因此沒有self指針。 如果希望回調能夠將消息發送到給定的對象,則需要在該回調中找到指向該對象的指針。 那可能是一個全局變量(ick),一個userInfo參數,該參數僅用於這種事情(好得多)或其他地方。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM