Вызов обратного вызова блока, хранящегося в переменной экземпляра - PullRequest
0 голосов
/ 04 ноября 2011

Я хочу вызывать метод за другим, асинхронный:

[[User sharedUser] loginWithUser:aUser andPassword:aPassword then:^
{
    User *user = [User sharedUser];

    NSLog(@"Hello, %@", user.name);

    [self.navigationController popViewControllerAnimated:YES];
}

Итак, loginWithUser:andPassword:then: запускает асинхронный NSUrlRequest, и я хотел бы вызвать блок обратного вызова в connectionDidFinishLoading:Метод делегата.

Прототип для моего метода:

- (void)logIn:(NSString *)email password:(NSString *)password then:(void (^)(void))callback

Мой User класс имеет переменную экземпляра _callback

@interface User : NSObject
{
    void                (^_callback)(void);
}

Я храню его вмой метод входа в систему такой:

_callback = Block_copy(callback);

и просто сделайте _callback() в моем методе делегата подключения URL. Почему происходит сбой моего приложения при вызове? .Если в обратном вызове нет упоминания self (просто NSLog), приложение не вылетает

Я могу сделать это более классическим способом с user.delegate = self и LoginDelegateпротокол, но я думал, что это было более элегантно.

...