eri*_*lvb 3 sqlite iphone objective-c ios automatic-ref-counting
当我尝试使用ARC使用以下SQLite代码执行此操作时,我收到该错误:
NSMutableArray *rows = [[NSMutableArray alloc] init];
sqlite3_exec(database, "select distinct category from billy", callback, rows, NULL);
Run Code Online (Sandbox Code Playgroud)
有人知道怎么修这个东西吗?
请注意,我从不执行ARC,但如果我正确理解文档,则将行参数转换为(__ bridge_retained void*)应该会有所帮助.
这是我用于测试的代码.
static int myCallback(void* ptr, int i, char** p1, char** p2) {
NSMutableArray* array = (__bridge_transfer NSMutableArray*)ptr;
return 0;
}
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
NSMutableArray *rows = [[NSTestMutableArray alloc] init];
sqlite3_exec(NULL, "select distinct category from billy", &myCallback, (__bridge_retained CFMutableArrayRef)rows, NULL);
}
Run Code Online (Sandbox Code Playgroud)
(__ bridge_transfer)用于将所有权转回,以便ARC正确发布.我重写的dealloc我NSTestMutableArray的,以表明它确实是释放了,如果我评论的__bridge_transfer线也不会被释放.
| 归档时间: |
|
| 查看次数: |
3088 次 |
| 最近记录: |