我想在 objective-c 的运行时调用Firebase SubscribeToTopic。
并成功使用如下实现的performSelector做到了这一点:

Class firebase = NSClassFromString(@"FIRMessaging");
SEL selectSubscribeToTopic=NSSelectorFromString(@"subscribeToTopic:");
SEL selectMessaging=NSSelectorFromString(@"messaging");

[[firebase performSelector:selectMessaging] performSelector:selectSubscribeToTopic withObject:topic withObject:^(NSError * _Nullable error) {
    if (error != nil) {
        NSLog(@"Framework Error while Subscribe");
    }
    else{
        NSLog(@"Framework Subscribed to %@ topic",topic);
    }
}];

但是完成块永远不会执行。有人可以提出最好的建议来实现Firebase SubscribeToTopic方法的运行时实现。

先感谢您 !

最佳答案

您的选择器是subscribeToTopic:。这意味着该方法仅接受一个参数。我会假设一个描述主题的NSString。

因此,将完成块作为第二个参数传递不会做任何事情。运行时没有任何神奇之处,它会导致完成块仅通过将其作为额外参数传递而执行。

所有这些都提出了一个不同的问题。为什么要使用performSelector:

关于ios - 在 objective-c 的运行时从类调用方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51001261/

10-10 21:33