【问题标题】:Out of scope CGFloat array超出范围的 CGFloat 数组
【发布时间】:2015-02-19 23:29:56
【问题描述】:

我想在touchesBegan 方法中使用didMoveToView 方法中定义的C 风格CGFloat 数组。我似乎无法将其定义为属性,因为它是一个 CGFloat 数组。全局变量似乎也不起作用。我的数组是这样定义的:

CGFloat levelMapX[] = {self.frame.size.width/2 ...};

我正在使用 SpriteKit。

【问题讨论】:

  • 实例变量呢?
  • 应该可以编译。发布整个方法。

标签: ios objective-c sprite-kit cgfloat


【解决方案1】:

您可以声明一个指向CGFloat 的指针。尽管数组和指针are not the same in C,但它们通常可以以类似的方式使用。

@property (assign, nonatomic) CGFloat* array;

然后像数组一样使用它:

const NSInteger myArraySize = 10 * sizeof(CGFloat);
self.array = malloc(myArraySize);
self.array[0] = 0.42;
self.array[1] = M_PI;

记得释放它,以免内存泄漏:

- (void)dealloc {
    free(self.array);
}

【讨论】:

  • 释放它会导致应用崩溃,我不知道为什么
  • 代码实际上应该是const NSInteger myArraySize = 10 * sizeof(CGFloat);,其中10是CGFloats的数量。 malloc 使用以字节为单位的大小。
  • @RedBadger 你是如何初始化self.array的?我测试了它,free 没有崩溃。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多