【问题标题】:Any example of useful pointer arithmetic in Objective-C / iOS programming?Objective-C / iOS编程中有用的指针算法的任何例子?
【发布时间】:2012-05-14 06:33:49
【问题描述】:

我知道 C 中存在指针运算,但任何人都可以举出任何例子说明为什么指针运算在 iOS 的 Objective-C 编程中曾经有用吗?我被难住了……

【问题讨论】:

    标签: objective-c ios c pointers pointer-arithmetic


    【解决方案1】:

    其实用的地方挺多的,这里只列举几个……

    • 数组访问

    每当您使用 C 数组并访问单个元素时(比如说数组 [12],它实际上被解释为 *(array+12)

    • OpenGLES

    如果你曾经使用过它,它会在 iOS 上大量使用指针算法,当需要将多个数组打包成一个交错数组时,你必须使用 offsetof,然后将其添加到内存缓冲区以获得完整位置属性。

    • 快速枚举

    通过使用指针算法,您可以通过增加实际指针而不是单个变量来加速元素的枚举。

    • 更轻松地对某些数据结构进行编程

    使用指针算法更容易实现某些数据结构,例如双端队列。

    【讨论】:

      【解决方案2】:

      目标 C 中不使用指针算术。问题是它有什么用处。答案是否定的。

      如上例所示,使用 C 数组不是对目标 C 的使用,而是对 C 的使用。目标 C 数组具有内置枚举功能以及使用 .count 属性的常规语法。

      为了回答这个问题,objective C 本身没有使用指针算术,因为它们不是必需的,并且 obj c 数组指针不支持。

      【讨论】:

        【解决方案3】:

        Objective C 中的所有指针运算都是从Objective C 派生的,是C 的严格超集,在Objective c 中没有使用不是从C 派生的。

        【讨论】:

        • 是的。您想要一个快速、高效的整数数组:使用带有指针算术的普通 C 语言,这是经典的方法。
        【解决方案4】:

        我认为它对开发快速枚举(即 for-in 循环)的人非常有用。

        【讨论】:

        • for (id object in array) 不是 C 的一部分吗??
        • @jshin47 - 不,不是,但我不明白它将如何使用指针算法。
        • @BinyaminSharet 它不是将内存位置偏移它包含的对象的大小以获得下一个对象吗?那不是指针算术还是我误解了?
        • @borrrden - 好的,但这是框架实现的一部分,不是开发人员做的事情。
        • @BinyaminSharet 我试图用这样的方式来表达它(不是在正常开发中使用的东西)......我想我失败了:(。开发框架的人也是开发人员不过,这个问题说它什么时候曾经有用。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-19
        • 2011-04-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多