3 回答

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超7個(gè)贊
要從C回調(diào)調(diào)用Objective-C代碼,我將使用類似以下內(nèi)容的代碼:
void * refToSelf;
int cCallback()
{
[refToSelf someMethod:someArg];
}
@implementation SomeClass
- (id) init
{
self = [super init];
refToSelf = self;
}
- (void) someMethod:(int) someArg
{
}

TA貢獻(xiàn)1825條經(jīng)驗(yàn) 獲得超6個(gè)贊
我可以/如何調(diào)用Objective-C方法代替它?
你不能。
可以/應(yīng)該在我的Objective-C調(diào)用中混用C函數(shù)嗎?
是。編寫一個(gè)C函數(shù),并將其用作CF函數(shù)的回調(diào)。
如何將C函數(shù)與Objective-C方法混合使用?
您可以將其設(shè)置self為info上下文結(jié)構(gòu)中的指針。這將傳遞給回調(diào)。然后,在回調(diào)中,將info指針轉(zhuǎn)換回id:
MyClass *self = (id)info;
然后,您可以發(fā)送self消息。但是,由于C函數(shù)在該@implementation部分之外,因此您仍然不能直接訪問(wèn)實(shí)例變量。您必須將它們?cè)O(shè)置為屬性。您可以使用類擴(kuò)展來(lái)做到這一點(diǎn)。(與該文檔相反,您不會(huì)在內(nèi)聲明擴(kuò)展名@implementation,而是在與擴(kuò)展名相同的文件中聲明該擴(kuò)展名,通常在其上方。)
- 3 回答
- 0 關(guān)注
- 694 瀏覽
添加回答
舉報(bào)