如何在Objective-C中将完成处理程序分配给另一个处理程序

时间:2018-08-29 10:37:36

标签: ios objective-c iphone

我在完成处理程序中遇到问题。

我有以下方法

-(void)authenticationRealmWithCompletion:(void (^)(AuthenticationRealm *authenticationRealm, NSError *error))completion realmId:(NSString *)realmId postDictionary:(NSDictionary *)postDictionary{
//my code
    }

现在我声明了如下变量

typedef void(^completionHandler)(AuthenticationRealm *authenticationRealm, NSError *error);

现在我要分配如下

-(void)authenticationRealmWithCompletion:(void (^)(AuthenticationRealm *authenticationRealm, NSError *error))completion realmId:(NSString *)realmId postDictionary:(NSDictionary *)postDictionary{
[completion copy];

//**HERE**..... Error Line
completionHandler(completion);   

//my code



 }

但是我收到了Redefinition of 'completion'

的错误提示

请建议如何将完成处理程序分配给另一个。

1 个答案:

答案 0 :(得分:3)

要分配完成处理程序,您必须创建属性  完成处理程序。

@property (nonatomic, copy) completionHandler completion;

然后在您的方法中使用以下代码进行分配。

self.completion = completion;

更新

方法也应定义为

-(void)authenticationRealmWithCompletion:(completionHandler)completion
                             realmId:(NSString *)realmId
                      postDictionary:(NSDictionary *)postDictionary{

self.completion = completion;

}