文書化されたブロックの使用例のほとんどは、単純な変数を使用したクロージャーを示していますが、周囲のコードに存在するオブジェクトにアクセスしようとする試みには困惑しています。たとえば、これは醜い、役に立たない方法でクラッシュします。
@interface VisualizerPreset : EyeCandyPreset {
float changeSourceRate;
float (^frontPanelSlider2DisplayValueBlock)(void);
}
....
VisualizerPreset *it;
it = [[VisualizerPreset alloc] init];
it.changeSourceRate = 0.4;
it.frontPanelSlider2DisplayValueBlock = ^(void) {
return it.changeSourceRate;
};
....
// this crashes
NSLog(@"%f",it.frontPanelSlider2DisplayValueBlock());