2014-12-21 3 views
-1

Я хочу использовать массив CGFloat C-стиля, определенный в методе didMoveToView в методе touchesBegan. Я не могу определить его как свойство, потому что это массив CGFloat. Глобалы тоже не работают. Мой массив определяется следующим образом:Вне рамки CGFloat array

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

Я использую SpriteKit.

+2

насчет переменной экземпляра? – rmaddy

+2

Это должно скомпилировать. Опубликуйте весь метод. – EricS

ответ

0

Вы можете объявить указатель на 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); 
} 
+0

освободить его от сбоя приложения, я не уверен, почему –

+0

Код должен действительно читать 'const NSInteger myArraySize = 10 * sizeof (CGFloat);', где 10 - это номер 'CGFloat'. 'malloc' использует размер, который находится в байтах. –

+0

Да, моя ошибка, спасибо, что указали это. –

Смежные вопросы