【问题标题】:Arrays of structs or native data types in Objective CObjective C 中的结构数组或原生数据类型
【发布时间】:2025-12-03 21:00:01
【问题描述】:

我已经遇到过几次这个问题了。上次,我想创建一个 BOOL 的数组(矩阵)数组。我最终将它们封装在 NSStrings 中,因为显然 NSArray 只有对象数组。

这一次,再次想要一个数组数组,但是是 CGPoints。我将使用这些将图像绘制到屏幕上。有没有办法在它们不是对象的情况下创建一个 CGPoints 数组?我是否应该担心拥有 96 个对象的矩阵的内存/性能开销?

【问题讨论】:

    标签: objective-c arrays struct


    【解决方案1】:

    我猜 96 是一个很小的数字,你不必太担心它。如果您使用 CGPoints,您可以使用 NSValue 来包装点(而不是 NSStrings),方法是在 iPhone 上使用 [NSValue valueWithCGPoint:] 方法或在 Mac OS X 10.5 上使用 [NSValue valueWithPoint:]。

    话虽如此,如果您提前知道 CGPoints 的数量,那么创建一个 CGPoints 数组非常容易。我谈到了这些选项(用于字符串,而不是点)here。在这种情况下,您可以像这样在 C 中创建一个 2D 数组:

    CGPoint myArray[32][3];
    

    然后像CGPoint onePoint = myArray[2][1];一样使用它

    【讨论】: