指向接口的指针的算法,对于该体系结构,它的大小不是恒定的

时间:2018-07-13 00:09:45

标签: objective-c pointers automatic-ref-counting

我看了其他几个都处理此错误的问题,但是所有答案基本上都只是说“不要做指针数学”。我的代码如下:

MyObject * __strong * array = (MyObject * __strong *)calloc(sizeof(MyObject*), 5);
array[0] += 4;

我想知道 为什么 我不能进行指针数学运算。根据错误,指向的MyObject*值大小不同,但这没关系,对吧?只是一个指针数组-谁在乎它们指向的东西有多大?

我想我可能只是不了解ARC的所有细微差别。

1 个答案:

答案 0 :(得分:2)

您的变量“数组”是指向指针的指针,是的,您可以将其视为指针数组。对象“ MyObject”的大小显然不是恒定的,并且编译器正确地不允许您执行此类操作。 尚不清楚您想对变量做什么。

array [0] + = 4;

从数组的第一个元素中获取“ MyObject *”,并希望向其添加偏移量4,但要计算此类偏移量,编译器希望知道对象的大小。 可能是您想做

    array = array + 4;
or 
    array += 4;