【问题标题】:rac_signalForSelector: needs empty implementationrac_signalForSelector:需要空实现
【发布时间】:2014-02-24 22:23:38
【问题描述】:

我有一个实现 UICollectionViewDelegate 协议的类。

我正在使用 rac_signalForSelector: 来注册这样的选择:

[self rac_signalForSelector:@selector(collectionView:didSelectItemAtIndexPath:)]

但它只有在我离开 collectionView:didSelectItemAtIndexPath: 的空实现时才会触发:像这样:

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
    // Empty
}

我也尝试了 rac_signalForSelector:fromProtocol: 没有运气。

我正在使用 Reactive Cocoa 2.2.4

谢谢, 米克尔

【问题讨论】:

    标签: ios objective-c reactive-cocoa


    【解决方案1】:

    确保在将对象设置为委托之前调用-rac_signalForSelector:。一些 Apple 框架会在您设置委托对象时检查您的类是否响应某个委托方法选择器,并缓存该信息,因此如果您当时还没有调用 -rac_signalForSelector: 并且您没有显式实现方法,这些委托方法永远不会被调用。

    【讨论】:

    • 有一个不优雅但可用的解决方法:将nil 分配为委托,然后重新分配真正的委托对象,这会破坏选择器缓存。如果您在之前分配委托后使用-rac_signalForSelector:,请执行此操作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-27
    • 2014-10-07
    • 1970-01-01
    • 1970-01-01
    • 2012-02-23
    • 2017-10-19
    • 2018-11-07
    相关资源
    最近更新 更多