指向接口的指针的算术对于该体系结构而言不是恒定大小
arithmetic on pointer to interface which is not a constant size for this architecture
我已经查看了其他几个处理此错误的问题,但所有答案基本上都只是说 "don't do pointer math"。我的代码如下:
MyObject * __strong * array = (MyObject * __strong *)calloc(sizeof(MyObject*), 5);
array[0] += 4;
我想知道为什么我不会做指针数学。根据错误,指向的 MyObject*
值大小不同,但这应该无关紧要,对吧?它只是一个指针数组 - 谁在乎它们指向的东西有多大?
我想我可能只是不了解 ARC 的所有细微差别。
您的变量 "array" 是指向指针的指针,是的,您可以将其视为指针数组。你的对象 "MyObject" 的大小显然不是常量,编译器不允许你做这样的操作是正确的。
不清楚你想用你的变量做什么。
数组[0] += 4;
从数组的第一个元素中获取 "MyObject *" 并希望将其添加到偏移量 4,但要计算此类偏移量,编译器需要知道对象的大小。
可能你想做类似
的事情
array = array + 4;
or
array += 4;
我已经查看了其他几个处理此错误的问题,但所有答案基本上都只是说 "don't do pointer math"。我的代码如下:
MyObject * __strong * array = (MyObject * __strong *)calloc(sizeof(MyObject*), 5);
array[0] += 4;
我想知道为什么我不会做指针数学。根据错误,指向的 MyObject*
值大小不同,但这应该无关紧要,对吧?它只是一个指针数组 - 谁在乎它们指向的东西有多大?
我想我可能只是不了解 ARC 的所有细微差别。
您的变量 "array" 是指向指针的指针,是的,您可以将其视为指针数组。你的对象 "MyObject" 的大小显然不是常量,编译器不允许你做这样的操作是正确的。 不清楚你想用你的变量做什么。
数组[0] += 4;
从数组的第一个元素中获取 "MyObject *" 并希望将其添加到偏移量 4,但要计算此类偏移量,编译器需要知道对象的大小。 可能你想做类似
的事情 array = array + 4;
or
array += 4;