调用存储在实例变量中的块回调

时间:2011-11-04 04:28:27

标签: objective-c objective-c-blocks

我想一个接一个地调用一个方法,异步:

[[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()为什么我的应用会在我打电话时崩溃?。如果回调中没有提及self(仅NSLog),则应用不会崩溃

我可以使用user.delegate = selfLoginDelegate协议以更经典的方式执行此操作,但我更优雅。

0 个答案:

没有答案