電弧遷移工具被拒絕接受此代碼與遷移開始前:如何在遷移到ARC時解析「沒有已知的選擇器實例方法performSelector:withObject:afterDelay:'」?
[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之下,我們宣佈代表作爲id的日子已經過去了嗎?簡單地依靠NSObject而不是? (對我而言,無論如何都是有意義的) – openfrog 2012-01-13 01:37:40
ARC爲了內存管理的目的強制執行這些事情。如果你知道你的委託將是NSObject類型的 - 那麼就說明這一點,這個問題就會消失。 – dtuckernet 2012-01-13 01:38:40
或者仍然使用'id',只是不要使用'NSObject'中的方法。無論如何,你爲什麼要用'NSObject'的方法?這裏有要求嗎? – mattjgalloway 2012-01-13 01:43:13