2 つの UIViewControllers(A,B) があります。A が B の代理人として設定され、B が表示されます。プロトコルは B のヘッダーに設定されます。
@protocol BDelegate <NSObject>
- (IBAction)finishOrder:(id)sender;
@end
デリゲート プロパティが宣言されています。
@property (nonatomic, assign) id<BDelegate> delegate;
A は B.delegate = self を設定します。次に、ボタンを押すと B が呼び出されます。
if (self.delegate) {
[self.delegate finishOrder:nil];
}
ただし、最初の実行でlldbは私に与えます:
-[UITextInteractionAssistant finishOrder:]: unrecognized selector sent to instance
2 回目の実行:
-[NSInvocation delegate]: unrecognized selector sent to instance
3 回目の実行:
-[__NSCFDictionary delegate]: unrecognized selector sent to instance
4 回目の実行:
-[UITextTapRecognizer finishOrder:]: unrecognized selector sent to instance
だから...コードは変更されていませんが、自己はAからNSInvocationと__NSCFDictionaryに変更され、Bのデリゲート(Aの自己)はUITextInteractionAssistantとUITextTapRecognizerに変更されました...そのようなものは見たことがありません. 何か案は?ありがとう!