我想一个接一个地调用一个方法,异步:
[[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 = self
和LoginDelegate
协议以更经典的方式执行此操作,但我更优雅。