Вызов [self methodName] изнутри блока?

Я только что столкнулся с блоками и думаю, что это именно то, что я ищу, за исключением одного: можно ли вызвать метод [ self methodName] из блока?

Вот что я пытаюсь сделать:

-(void)someFunction{
    Fader* fader = [[Fader alloc]init];

    void (^tempFunction)(void) = ^ {
        [self changeWindow:game]; 
        //changeWindow function is located in superclass
    };

    [fader setFunction:tempFunction];
}

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

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

Причина, по которой я использую блоки, заключается в том, что я создал класс Fader, и я хочу сохранить блок для его выполнения, когда он закончит исчезать.

Спасибо

ИЗМЕНИТЬ: Хорошо, я добавил предложение, но все еще получаю ошибку EXC_BAD_ACCESS ...

-(void)someFunction{
    Fader* fader = [[Fader alloc]init];

    __block MyScreen* me = self;

    void (^tempFunction)(void) = ^ {
        [me changeWindow:game]; 
        //changeWindow function is located in superclass
    };

    [fader setFunction:tempFunction];
    [fader release];
}

Может быть, мне не разрешено давать фейдер функцию ...?

72
задан dandan78 15 January 2015 в 07:28
поделиться