小编ElB*_*eno的帖子

在指向Objective-C对象的指针数组上的qsort

我有一个指向Objective-C对象的数组.这些对象具有与之关联的排序键.我正在尝试使用qsort对指向这些对象的指针数组进行排序.但是,第一次调用比较器时,第一个参数指向数组中的第一个元素,但第二个参数指向垃圾,当我尝试访问其排序键时,给我一个EXC_BAD_ACCESS.

这是我的代码(转述):

- (void)foo:(int)numThingies {
    Thingie **array;
    array = malloc(sizeof(deck[0])*numThingies);

    for(int i = 0; i < numThingies; i++) {
        array[i] = [[Thingie alloc] initWithSortKey:(float)random()/RAND_MAX];
    }

    qsort(array[0], numThingies, sizeof(array[0]), thingieCmp);
}

int thingieCmp(const void *a, const void *b) {
    const Thingie *ia = (const Thingie *)a;
    const Thingie *ib = (const Thingie *)b;

    if (ia.sortKey > ib.sortKey) return 1; //ib point to garbage, so ib.sortKey produces the EXC_BAD_ACCESS
    else return -1;
}
Run Code Online (Sandbox Code Playgroud)

任何想法为什么会这样?

objective-c qsort

4
推荐指数
1
解决办法
2509
查看次数

标签 统计

objective-c ×1

qsort ×1