【问题标题】: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];一样使用它