第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

在Objective-C類中混合C函數(shù)

在Objective-C類中混合C函數(shù)

瀟瀟雨雨 2019-11-26 13:17:09
我正在編寫一個(gè)Objective-C類,但是它使用用C編寫的API。這很好,因?yàn)閷調(diào)用與Objective-C調(diào)用混合使用不會(huì)引起什么問(wèn)題。但是,API調(diào)用之一需要回調(diào)方法(示例):success = CFHostSetClient(host, MyCFHostClientCallBack, &context);MyCFHostClientCallBackC函數(shù)定義在哪里:static void MyCFHostClientCallBack(CFHostRef host, CFHostInfoType typeInfo, const CFStreamError *error, void *info);我可以/如何調(diào)用Objective-C方法代替它?我可以/應(yīng)該將C函數(shù)與我的Objective-C調(diào)用混合使用嗎?如何將C函數(shù)與Objective-C方法混合使用?
查看完整描述

3 回答

?
三國(guó)紛爭(zhēng)

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

{

}


查看完整回答
反對(duì) 回復(fù) 2019-11-26
?
胡子哥哥

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ò)展名,通常在其上方。)


查看完整回答
反對(duì) 回復(fù) 2019-11-26
  • 3 回答
  • 0 關(guān)注
  • 694 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)