Я хотел бы создать 11 текстовых слоев для гальки. Без цикла код будет выглядеть примерно так.C: Как сгенерировать фиксированное число объектов с массивом указателей
static TextLayer *time_layer_a;
static TextLayer *time_layer_b;
... и так далее.
Как это сделать с помощью цикла и поместить указатели на объекты в список как структура?
: в этом случае массив или цепочка будут лучше, потому что коллекция указателей предназначена для отображения с фиксированным количеством текстовых слоев. И количество слоев не будет изменено в течение продолжительности программы. В C список представляет собой структуру, которая может быть динамически изменена. Использование «list like» может ввести в заблуждение полезных людей к предположению, что искомый метод цепочки будет динамичным. Это неверно. Предпочтительной является структура, которая использует фиксированное распределение памяти.
Редактировать: массив, предложенный John3136, отлично работал. Массив обладает дополнительным преимуществом создания указателей объектов с его замедлением. И это плюс, что John3136 дал возможность автоматически настроить код на размер массива. Это полезный инструмент.
Вот код применительно к созданию текстовых слоев для моего лица.
декларации: метод
int i;
static TextLayer* layers[11];
загрузки: метод
// by John3136
// Note the sizeof() stuff means this works unchanged even if you change
// the number of layers.
for(i = 0; i < (short)(sizeof(layers)/sizeof(layers[0])); i++) // (short) converts unsigned interger to +- int
{
layers[i] = text_layer_create(GRect((bounds.size.w/4)*((i + 1)%4),
(bounds.size.h/PBL_IF_ROUND_ELSE(5,4))*((i > 2)
? ((i > 6)
? 3
: 2)
: 1),
(bounds.size.w/4) ,(bounds.size.h/PBL_IF_ROUND_ELSE(5,4))));
}
разгрузки:
for(i = 0; i < (short)(sizeof(layers)/sizeof(layers[0])); i++)
{
text_layer_destroy(layers[i]);
}
Не ясно, что вы хотите достичь. Видимо, у вас уже есть код, поэтому предоставите [mcve]. Также узнайте [ask] и предоставьте необходимую информацию. – Olaf
Расширение этого вопроса, чтобы быть полным и скомпилированным примером, просто добавило бы лишний беспорядок. Я думаю, что этот вопрос в порядке. – hugomg
@ Олаф, я пишу свою первую программу на C. Я еще не знаю всех структур на С или для чего они лучше всего подходят. Я знал, что искал что-то вроде «списка». В то время это было лучшее, что я мог сделать. Я бы попросил массив, если бы знал, что массив будет работать хорошо. – kjl