我刚遇到了blocks,我觉得它们正是我想要的,除了一个问题:是否可以在block内调用一个方法[self methodName]?
这就是我想做的:
-(void)someFunction{
Fader* fader = [[Fader alloc]init];
void (^tempFunction)(void) = ^ {
[self changeWindow:game];
//changeWindow function is located in superclass
};
[fader setFunction:tempFunction];
}
我已经搜索了几天,找不到任何证据表明这是可能的。
这个有可能吗,还是我试图用blocks做一些它们不应该做的事情?
我使用blocks的原因是我创建了一个Fader类,并且我想存储一个block,在淡出完成时执行它。
谢谢
编辑: 好的,我加入了建议,但仍然收到了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];
}
也许我不允许把函数给 fader ...?