Подтвердить что ты не робот

"Указатель блока на не-функциональный тип недействителен"

Здесь у меня есть способ кодирования строки (она неполна), и вы обнаружите, что моя проблема - ошибка: "Указатель блока на не-функциональный тип недопустим"

+ (NSString *)encodeString: (NSString *)string {
    __block int indexShift;
    __block NSString *dictionary = @"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
    __block NSString *encodeDictionary = @"mahgbcjdfukripylswxovzetqnFMAJWGCQYXLOETPBKSVNIZUHDR";
    __block NSString *encodeString = @"";

    void (^encode) = ^{ // Error here, "Block pointer to non-function type is invalid"
        for (int x = 0; x < string.length; x++) {
            int index = [dictionary indexOf:[string characterAtIndex:x]];
            indexShift += index;
            encodeString = [encodeString stringByAppendingFormat:@"%c", [encodeDictionary characterAtIndex:index+indexShift]];
        }
    };

    return encodeString;
}

Скажите, пожалуйста, почему это происходит или что мне нужно изменить, чтобы исправить это.

4b9b3361

Ответ 1

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

ReturnType(^block_name)(parmeter, types, here) = ^(parameter, types, here) {

};

Итак, вы ищете:

void(^encode)() = ^() {

};