Доступ к массиву C внутри блоков (количество переменных массивов) Objective-C

Блоки в порядке, но как насчет записи массивов C?

Учитывая эту упрощенную ситуацию:

CGPoint points[10];
[myArray forEachElementWithBlock:^(int idx) {
    points[idx] = CGPointMake(10, 20); // error here
    // Cannot refer to declaration with an array type inside block
}];

после некоторого поиска нашел это возможное решение, чтобы поместить его в структуру:

__block struct {
    CGPoint points[100];
} pointStruct;

[myArray forEachElementWithBlock:^(int idx) {
    pointStruct.points[idx] = CGPointMake(10, 20);
}];

this будет работать, но есть небольшое ограничение, которое я должен создать динамически:

int count = [str countOccurencesOfString:@";"];
__block struct {
    CGPoint points[count]; // error here
    // Fields must have a constant size: 'variable length array in structure' extension will never be supported
} pointStruct;

Как я могу получить доступ к моему массиву CGPoint в блоке ?

ИЛИ

Возможно ли это вообще или мне нужно переписать метод блока, чтобы получить полную функциональность?

18
задан 21 October 2011 в 06:24
поделиться