ios 传入c 代码回调的使用

本文介绍了在Objective-C中如何通过定义回调函数实现从C语言传递数据回Objective-C的方法,并提供了一个具体的SQLite数据库操作示例。

情况就是objective-c 调用c 并且要把数据回传到objective-c 的标准使用方法:

定义回调函数,回调里边void*context int count 用于传入objective 对象,后边是回调的内容。


所以回调函数可以写成

typedef  int   (*Player_Callback)(void *opaque, int message, void *data, size_t data_size);


基本的使用所下所示:

/*

 SQLITE_API int SQLITE_STDCALL sqlite3_exec(
 sqlite3*,
const char *sql,
int (*callback)(void*,int,char**,char**),
void *,
char **errmsg                             
 );

 */
static int MyCallback(void *context, int count, char **values, char **columns)
{
    NSMutableArray *names = (__bridge NSMutableArray *)context;
    for (int i=0; i < count; i++) {
        const char *nameCString = values[i];
        [names addObject:[NSString stringWithUTF8String:nameCString]];
    }
    return SQLITE_OK;
}

@implementation MyTableViewController

- (void)loadNamesFromDatabase
{
    NSString *file = [[NSBundle mainBundle] pathForResource:@"names" ofType:@"db"];
    sqlite3 *database = NULL;
    if (sqlite3_open([file UTF8String], &database) == SQLITE_OK) {
        sqlite3_exec(database, "select name from person", MyCallback, names, NULL);
    }
    sqlite3_close(database);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值