Установите размер массива с плавающей точкой из метода вне класса (или структуры GLKVector) - PullRequest
0 голосов
/ 29 декабря 2011

Мне было интересно, может ли кто-нибудь сказать мне, как выполнить следующее:

Я использую раскадровки xcode, чтобы передать значение или изменить значение, которое я должен использовать в segue, что в основном позволяет мне вызыватьметод нового класса (view) в окне предварительного просмотра, чтобы установить значение в целевом представлении.

, поэтому у меня есть это в моем представлении предварительного просмотра:

ARViewController *temp = segue.destinationViewController;
[temp setDrawableArray:temp];

Здесь temp - этоСтруктура, которую я определил, эта структура имеет int, который я хочу использовать для установки размера массива в новом классе.

Новый класс следует следующим образом при объявлении переменной в файле заголовка:

@interface ARViewController : UIViewController <GLKViewDelegate>
{
    GLKVector3 drawableArray;
}
- (void)setDrawableArray:(Kanji)temp;

@end

Здесь я хотел бы спросить, нормально ли это объявление, или это должно быть что-то вроде

GLKVector3 *drawableArray;

(GLKVector - это просто структура с плавающей точкой, поэтому ее можно легко заменить наfloat drawableArray)

В реализации класса (.m) у меня есть метод:

- (void)setDrawableArray:(Kanji)temp
{
    drawableArray = GLKVector3 drawableArray[5];
    //Here i want to do some operations to the newly created array

}

Это, конечно, неправильно, я понятия не имею, как установить размер массиваесли кто-то будет так любезенскажите мне, что я был бы очень признателен.

PD: Массив должен быть глобальным для класса, потому что я буду использовать его в разных местах этого класса.

1 Ответ

1 голос
/ 29 декабря 2011

Необъектная обработка массива в Obj-C такая же, как и в C. Чтобы объявить динамический глобальный массив, вам нужно объявить переменную типа указатель на массив так же, как вы объявляете указатели наОбъекты Obj-C.Однако в C на самом деле нет никакой разницы между указателем на одно значение и указателем на массив значений, поэтому ваше второе объявление верно:

GLKVector3 *drawableArray;

Для выделения массива используйте calloc(number of elements, size of each element), напримерчтобы создать массив из 5 элементов:

drawableArray = calloc(5, sizeof(GLKVector3));

Когда вы закончите работу с массивом, вы должны освободить его с помощью free():

free(drawableArray);

И, наконец, помните, что есть нет проверки границ массива, поэтому при индексации вы должны выполнять собственные проверки, иначе вы будете читать / записывать случайную память.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...