[英]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.