情况就是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);
}
本文介绍了在Objective-C中如何通过定义回调函数实现从C语言传递数据回Objective-C的方法,并提供了一个具体的SQLite数据库操作示例。
5749

被折叠的 条评论
为什么被折叠?



