Cocoapods更新后没有调用Objective-C块

时间:2014-10-06 04:57:46

标签: ios objective-c-blocks cocoapods

我有一个块的调用 - 具体来说,它是UIAlertView的一个块,它根据按下的按钮提供功能。我使用的是UIAlertView + Blocks,可在此处找到:https://github.com/ryanmaxwell/UIAlertView-Blocks

一切都很好看,直到我最近通过安装' pod安装刷新了Cocoapods。命令。尽管UIAlertView + Blocks的版本没有改变,但更新我的cocoapods包装工作区的简单行为导致了一个非常奇怪的错误,即不再为UIAlertView + Blocks调用任何完成块。

认为它可能是pod中的一个错误,我为UIAlertView完成块尝试了另外两个cocoapod。没有骰子 - 正在跳过UIAlertView的任何完成块。

有问题的方法:

[UIAlertView showWithTitle:@"Change Password" 
  message:@"Please enter your new password below." 
  style:UIAlertViewStyleSecureTextInput 
  cancelButtonTitle:@"Cancel" 
  otherButtonTitles:[NSArray arrayWithObjects:@"OK", nil] 
  tapBlock:^(UIAlertView *alertView, NSInteger buttonIndex) {

    //THIS PART ISN'T BEING CALLED
    NSLog(@"Change password, do some other stuff...");

    //Do other things...

}];

其他类的所有其他块工作正常。它只是与UIAlertView相关的块已停止工作。

2 个答案:

答案 0 :(得分:1)

两个建议/问题。

  1. 清理项目以及派生数据,再次构建。
  2. 您是否更改过运行此设备/模拟器的iOS版本?在iOS8中不推荐使用UIAlertView - iOS8使用UIAlertController作为UIAlertView和UIActionSheet的警报类。你使用的pod最后更新于7个月前,是为UIAlertView而不是UIAlertController编写的。

答案 1 :(得分:0)

Kaupo提供了关键信息 - 我检查了我的git diff并发现我的其他一个cocoapods也正在更新,两者一起导致UIAlertView委托系统发生冲突 - &#39这就是为什么这个街区没有被召唤的原因。 /捂脸

最后,我通过为我的UIAlertViews使用不同的cocoapod解决了这个问题 - UIBAlertView