objective-c - 指向接口的指针的算术,这对于这个架构来说不是一个恒定的大小
问题描述
我已经查看了其他几个都处理此错误的问题,但所有答案基本上都只是说“不要做指针数学”。我的代码如下:
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;
推荐阅读
- matlab - 调整图形大小时,辅助轴会移位
- java - 哪些对象在 Java Card 中是持久的,什么时候持久?
- javascript - 如何使用javascript在与文本相同的行中添加按钮?
- java - 编写多线程的最佳方法
- sql - 如何查找输入值不合适的记录
- tensorflow - 张量流 sigmoid 函数不起作用
- pip - 无法 PIP 安装 Python ftfy 包
- php - 从 php curl 调用渲染 .NET 视图
- android - 如何在屏幕中心的所有小部件顶部显示 CircularProgressIndicator
- django - Django 无法访问 Azure 挂载的存储