ios – 如何解决“没有已知的选择器的实例方法”performSelector:withObject:afterDelay:’“当迁移到ARC?

前端之家收集整理的这篇文章主要介绍了ios – 如何解决“没有已知的选择器的实例方法”performSelector:withObject:afterDelay:’“当迁移到ARC?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
ARC迁移工具在开始迁移之前拒绝接受此代码
[self.delegate performSelector:@selector(overlayDismissed:) withObject:self afterDelay:0];

委托人被迫使用协议实现这个方法,它应该可以正常工作:

@protocol OverlayDelegate <NSObject>
- (void)overlayDismissed:(Overlay*)overlay;
@end

@interface Overlay : UIImageView {
    id<OverlayDelegate> delegate;
}

@property (nonatomic,assign) id<OverlayDelegate> delegate;

ARC有什么问题?为什么告诉我有没有已知的选择器实例方法performSelector:withObject:afterDelay:’?

解决方法

ARC不是造成这种 – 它只是暴露它.该方法在NSObject上定义,但是id不仅仅适用于NSObject(所以你必须比仅仅’id’更具体).将您的代码更改为:
@interface Overlay : UIImageView {
    NSObject<OverlayDelegate> *delegate;
}

@property (nonatomic,assign) NSObject<OverlayDelegate> *delegate;
原文链接:https://www.f2er.com/iOS/337379.html

猜你在找的iOS相关文章