iPhone EXC_BAD_ACCESS ao usar blocos
Estou tentando criar um retorno de chamada simples usando blocos. Eu tenho um MainViewController que addSubView outro DatePickerViewController.view eu criei um bloco como este
typedef void(^DateChangedBlock)(NSDate*);
E eu tenho um método no meu DatePickerViewController chamado
setOnDateChangedCallback:(DateChangedBlock)callback
Armazeno o retorno de chamada em uma propriedade do DatePickerViewController. A visualização DatePickerViewController é uma instância UIDatePicker, vinculou uma IBAction ao valor alterado para um método que faz iss
- (IBAction)dateChanged:(id)sender {
if (dateChangedCallback != nil)
{
dateChangedCallback(nil);
}
}
Aqui está como eu registro o bloco no MainViewController
DatePickerViewController *dateController = [[DatePickerViewController alloc] initWithNibName:@"DatePickerView" bundle:nil];
self.datePicker = dateController;
UITextView *textView = [[UITextView alloc] initWithFrame:CGRectMake(0, 0, 100, 200)];
[self.view addSubview:textView];
DateChangedBlock myBlock = ^(NSDate *newDate) {
textView.text = @"testing";
};
[self.datePicker setOnDateChanged: myBlock];
[self.datePicker dateChanged:self]; // force trigger (this works).
Quando forço o acionamento do método dateChanged no DatePickerViewController, ele não funciona. Mas quando o próprio datepicker aciona o método através do IBAction, recebo um erro EXC_BAD_ACCESS. O erro ocorre neste método na linha "int retVal".
#import <UIKit/UIKit.h>
int main(int argc, char *argv[])
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, nil, nil); // THREAD 1: program received EXC_BAD_ACCCESS.**
[pool release];
return retVal;
}
O que estou fazendo errado