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;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)